38
Advanced Moment Estimation & Optimization with PortfolioAnalytics R/Finance 2015 Ross Bennett Advanced Moment Estimation & Optimization with PortfolioAnalytics 1 of 38

Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Advanced Moment Estimation &Optimization with PortfolioAnalyticsR/Finance 2015

Ross Bennett

Advanced Moment Estimation & Optimization with PortfolioAnalytics

1 of 38

Page 2: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

OverviewDiscuss Portfolio Optimization

Introduce PortfolioAnalytics

Demonstrate PortfolioAnalytics with Examples

·

·

·

2/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

2 of 38

Page 3: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Modern Portfolio Theory"Modern" Portfolio Theory (MPT) was introduced by Harry Markowitz in 1952.

In general, MPT states that an investor's objective is to maximize portfolio expected return for agiven amount of risk.

General Objectives

How do we de�ne risk? What about more complex objectives and constraints?

Maximize a measure of gain per unit measure of risk

Minimize a measure of risk

·

·

3/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

3 of 38

Page 4: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Portfolio Optimization ObjectivesMinimize Risk

Maximize Risk Adjusted Return

Risk Budgets

Maximize a Utility Function

·

Volatility

Tail Loss (VaR, ES)

Other Downside Risk Measure

-

-

-

·

Sharpe Ratio, Modi�ed Sharpe Ratio

Several Others

-

-

·

Equal Component Contribution to Risk (i.e. Risk Parity)

Limits on Component Contribution

-

-

·

Quadratic, CRRA, etc.-

4/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

4 of 38

Page 5: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

PortfolioAnalytics OverviewPortfolioAnalytics is an R package designed to provide numerical solutions and visualizationsfor portfolio optimization problems with complex constraints and objectives.

Support for multiple constraint and objective types

Modular constraints and objectives

An objective function can be any valid R function

Support for user de�ned moment functions

Visualizations

Solver agnostic

Support for parallel computing

·

·

·

·

·

·

·

5/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

5 of 38

Page 6: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

New in PortfolioAnalyticsPushed to CRAN

Regime Switching Framework

Multilayer Optimization

Rank Based Optimization

Factor Model Moment Estimates

Improved Random Portfolios Algorithm

More demos, vignettes, and documentation

·

·

·

·

·

·

·

6/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

6 of 38

Page 7: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Multilayer Optimization

7/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

7 of 38

Page 8: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Support Multiple SolversLinear and Quadratic Programming Solvers

Global (stochastic or continuous solvers)

R Optimization Infrastructure (ROI)·

GLPK (Rglpk)

Symphony (Rsymphony)

Quadprog (quadprog)

-

-

-

Random Portfolios

Di�erential Evolution (DEoptim)

Particle Swarm Optimization (pso)

Generalized Simulated Annealing (GenSA)

·

·

·

·

8/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

8 of 38

Page 9: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Random PortfoliosPortfolioAnalytics has three methods to generate random portfolios.

The sample method to generate random portfolios is based on an idea by Pat Burns.1.

The simplex method to generate random portfolios is based on a paper by W. T. Shaw.2.

The grid method to generate random portfolios is based on the gridSearch function in theNMOF package.

3.

9/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

9 of 38

Page 10: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Comparison of Random Portfolio Methods(Interactive!)

10/38

0.0100 0.0150 0.0200 0.0250 0.0300

Risk (std. dev.)

0.0082 0.0345

0.0055

0.0060

0.0065

0.0070

0.0075

Ret

urn

0.0051

0.0078samplesimplexgridMagnify

Advanced Moment Estimation & Optimization with PortfolioAnalytics

10 of 38

Page 11: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Random Portfolios: Simplex Method

11/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

11 of 38

Page 12: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Workflow: Specify Portfolio

Initializes the portfolio object that holds portfolio level data, constraints, and objectives

args(portfolio.spec)

## function (assets = NULL, category_labels = NULL, weight_seq = NULL,

## message = FALSE)

## NULL

12/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

12 of 38

Page 13: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Workflow: Add Constraints

Supported Constraint Types

args(add.constraint)

## function (portfolio, type, enabled = TRUE, message = FALSE, ...,

## indexnum = NULL)

## NULL

Sum of Weights

Box

Group

Factor Exposure

Position Limit

and many more

·

·

·

·

·

·

13/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

13 of 38

Page 14: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Workflow: Add Objectives

Supported Objective types

args(add.objective)

## function (portfolio, constraints = NULL, type, name, arguments = NULL,

## enabled = TRUE, ..., indexnum = NULL)

## NULL

Return

Risk

Risk Budget

Weight Concentration

·

·

·

·

14/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

14 of 38

Page 15: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Workflow: Run Optimizationargs(optimize.portfolio)

## function (R, portfolio = NULL, constraints = NULL, objectives = NULL,

## optimize_method = c("DEoptim", "random", "ROI", "pso", "GenSA"),

## search_size = 20000, trace = FALSE, ..., rp = NULL, momentFUN = "set.portfolio.moments",

## message = FALSE)

## NULL

args(optimize.portfolio.rebalancing)

## function (R, portfolio = NULL, constraints = NULL, objectives = NULL,

## optimize_method = c("DEoptim", "random", "ROI"), search_size = 20000,

## trace = FALSE, ..., rp = NULL, rebalance_on = NULL, training_period = NULL,

## rolling_window = NULL)

## NULL

15/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

15 of 38

Page 16: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Workflow: Analyze ResultsVISUALIZATION DATA EXTRACTION

plot extractObjectiveMeasures

chart.Concentration extractStats

chart.EfficientFrontier extractWeights

chart.RiskReward print

chart.RiskBudget summary

chart.Weights

16/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

16 of 38

Page 17: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Portfolio Optimization

17/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

17 of 38

Page 18: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Estimating MomentsLedoit and Wolf (2003):

"The central message of this paper is that nobody should be using the sample covariancematrix for the purpose of portfolio optimization."

Sample

Shrinkage Estimators

Factor Model

Expressing Views

·

·

·

·

18/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

18 of 38

Page 19: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Meucci Fully Flexible ViewsReference Model

Views

Express View on Ranking

Posterior

·

X ∼ fX

·

V ≡ g(X) ∼ fV

·

m{ } ≥ m{ } ≥. . . ≥ m{ }V1 V2 VK

·

≡ entropy(f , )f̃ x argmin f∈V

fx

19/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

19 of 38

Page 20: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Almgren-Chriss Portfolios from SortsDe�ne as the investment universe of assets

De�ning Sorts

Centroid vector, , is de�ned as the center of mass of the set .

· , , . . . ,S1 S2 Sn n

·

Single complete sort

Sector based sort

Deciles and other divisions

Single complete sort with longs and shorts

others

-

≥ ≥. . . ≥r1 r2 rn

-

-

-

-

· c Q

where is the space of consistent expected returns- Q

20/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

20 of 38

Page 21: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 1 and 2Consider an allocation to hedge funds using the EDHEC-Risk Alternative Index as a proxy.

Simple example of expressing a view on the order of the expected returns of assets usingboth Meucci's Fully Flexible Views and the Almgren-Chriss framework

Establish a quantitative rule for our view on the order of the expected returns of assets andtest on historical data.

·

·

21/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

21 of 38

Page 22: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 1: Data and Portfolio# Load package and data

library(PortfolioAnalytics)

source("data_prep.R")

R <- edhec[,1:4]

funds <- colnames(R)

# Construct portfolio

meanSD.portf <- portfolio.spec(assets=funds)

meanSD.portf <- add.constraint(portfolio=meanSD.portf, type="weight_sum",

min_sum=0.99, max_sum=1.01)

meanSD.portf <- add.constraint(portfolio=meanSD.portf, type="box",

min=0.05, max=0.5)

meanSD.portf <- add.objective(portfolio=meanSD.portf, type="risk", name="StdDev")

meanSD.portf <- add.objective(portfolio=meanSD.portf, type="return", name="mean")

# Generate random portfolios for use in the optimization.

rp <- random_portfolios(meanSD.portf, 5000)

22/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

22 of 38

Page 23: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 1: Express Views

Meucci: Fully Flexible Views Framework

Almgren and Chriss: Portfolios from Sorts

# Here we express views on the relative rank of the asset returns

# E{ R[,2] < R[,3] < R[,1] < R[,4] }

asset.rank <- c(2, 3, 1, 4)

p <- rep(1 / nrow(R), nrow(R))

m.moments <- meucci.ranking(R, p, asset.rank)

ac.moments <- list()

ac.moments$mu <- ac.ranking(R, asset.rank)

# Sample estimate for second moment

ac.moments$sigma <- cov(R)

23/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

23 of 38

Page 24: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 1: Optimization# Use moments output from meucci.ranking

opt.meucci <- optimize.portfolio(R, portfolio=meanSD.portf,

optimize_method="random",

rp=rp,

trace=TRUE,

momentargs=m.moments)

# Use first moment from ac.ranking. Note second moment is sample covariance

opt.ac <- optimize.portfolio(R, portfolio=meanSD.portf,

optimize_method="random",

rp=rp,

trace=TRUE,

momentargs=ac.moments)

24/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

24 of 38

Page 25: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 1: Optimization Results Optimal Weights

25/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

25 of 38

Page 26: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 2: Custom Moment Functionmoment.ranking <- function(R, n=1, method=c("meucci", "ac")){

method <- match.arg(method)

tmpR <- apply(tail(R, n), 2, function(x) prod(1 + x) - 1)

# Assume that the assets with the highest return will continue to outperform

asset.rank <- order(tmpR)

switch(method,

meucci = {

p <- rep(1 / nrow(R), nrow(R))

moments <- meucci.ranking(R, p, asset.rank)

},

ac = {

moments <- list()

moments$mu <- ac.ranking(R, asset.rank)

moments$sigma <- cov(R)

})

moments

}

26/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

26 of 38

Page 27: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 2: Optimization with Periodic Rebalancingopt.bt.meucci <- optimize.portfolio.rebalancing(R, portfolio=meanSD.portf,

optimize_method="random", rp=rp,

rebalance_on="quarters",

training_period=72,

momentFUN="moment.ranking",

n=3, method="meucci")

opt.bt.ac <- optimize.portfolio.rebalancing(R, portfolio=meanSD.portf,

optimize_method="random", rp=rp,

rebalance_on="quarters",

training_period=72,

momentFUN="moment.ranking",

n=3, method="ac")

27/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

27 of 38

Page 28: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 2: Optimization Results

28/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

28 of 38

Page 29: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Minimum Expected Shortfall with RiskBudget LimitConsider an allocation to equity sectors using 9 sector ETFs.

Raw returns data and sample moment estimates

Cleaned returns data and factor model moment estimates

·

·

29/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

29 of 38

Page 30: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Data and Portfolio# Data

R.raw <- ret.sector

R <- Return.clean(R.raw, "boudt")

funds <- colnames(R)

# Construct initial portfolio with basic constraints.

ES.portf <- portfolio.spec(assets=funds)

ES.portf <- add.constraint(portfolio=ES.portf, type="weight_sum",

min_sum=0.99, max_sum=1.01)

ES.portf <- add.constraint(portfolio=ES.portf, type="long_only")

ES.portf <- add.objective(portfolio=ES.portf, type="risk", name="ES",

arguments=list(p=0.95))

ES.portf <- add.objective(portfolio=ES.portf, type="risk_budget",

name="ES", max_prisk=0.25,

arguments=list(p=0.95))

# Generate random portfolios

rp <- random_portfolios(ES.portf, 5000)

30/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

30 of 38

Page 31: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Fit Statistical Factor Model# This is not necessary for the optimization, but demonstrates how to extract

# the moments for use in custom objective function

fit <- statistical.factor.model(R, k=3)

# Extract the moments

sigma <- extractCovariance(fit)

m3 <- extractCoskewness(fit)

m4 <- extractCokurtosis(fit)

31/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

31 of 38

Page 32: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Custom Moment Functionfm.moments <- function(R, k=1){

fit <- statistical.factor.model(R=R, k=k)

momentargs <- list()

momentargs$mu <- matrix(rep(0, ncol(R)),ncol=1)

momentargs$sigma <- extractCovariance(fit)

momentargs$m3 <- extractCoskewness(fit)

momentargs$m4 <- extractCokurtosis(fit)

return(momentargs)

}

32/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

32 of 38

Page 33: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Optimization with Periodic Rebalancing# Higher moment estimates from statistical factor model

minES.boudt <- optimize.portfolio.rebalancing(R=R, portfolio=ES.portf,

momentFUN=fm.moments, k=3,

optimize_method="random", rp=rp,

rebalance_on="quarters",

training_period=1250,

trace=TRUE)

# Sample estimates of the moments

minES.sample <- optimize.portfolio.rebalancing(R=R.raw, portfolio=ES.portf,

optimize_method="random", rp=rp,

rebalance_on="quarters",

training_period=1250,

trace=TRUE)

33/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

33 of 38

Page 34: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Example 3: Optimization Results

34/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

34 of 38

Page 35: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Conclusion

AcknowledgementsMany thanks to...

Introduced the goals and summary of PortfolioAnalytics

Demonstrated the �exibility through examples

Plans for continued development

·

·

·

Interface to

Additional solvers

"Gallery" of examples

- parma-

-

Google: funding Google Summer of Code (GSoC) for 2013 and 2014

UW CF&RM Program: continued work on PortfolioAnalytics

GSoC Mentors: Brian Peterson, Peter Carl, Doug Martin, and Guy Yollin

R/Finance Committee

·

·

·

·

35/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

35 of 38

Page 36: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

PortfolioAnalytics Links

Source code for the slides

and view it here

PortfolioAnalytics on CRAN

PortfolioAnalytics on R-Forge

·

·

https://github.com/rossb34/PortfolioAnalyticsPresentation2015·

http://rossb34.github.io/PortfolioAnalyticsPresentation2015/·

36/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

36 of 38

Page 37: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

Any Questions?

37/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

37 of 38

Page 38: Advanced Moment Estimation & Optimization with …past.rinfinance.com/agenda/2015/workshop/RossBennett.pdf · 2015-06-08 · PortfolioAnalytics is an R package designed to provide

References and Useful LinksROI

DEoptim

pso

GenSA

PerformanceAnalytics

Patrick Burns Random Portfolios

W.T. Shaw Random Portfolios

Improved Forecasts of Higher-Order Co-moments and Implications for Portfolio Selection

Higher Order Comoments of Multifactor Models and Asset Allocation

Shiny App

·

·

·

·

·

·

·

·

·

·

38/38

Advanced Moment Estimation & Optimization with PortfolioAnalytics

38 of 38