inst/doc/BLCOP.R

## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  echo = TRUE,
  fig.align = "center", 
  fig.width = 6, 
  fig.height = 6)

## ---- message = FALSE, warning = FALSE, print = FALSE-------------------------
library(fPortfolio)
library(BLCOP)
library(mnormt)

## ---- print = FALSE-----------------------------------------------------------
pickMatrix <- matrix(c(1/2, -1, 1/2, rep(0, 3)), nrow = 1, ncol = 6 )
views <- BLViews(P = pickMatrix, q = 0.06,confidences =  100,
assetNames = colnames(monthlyReturns))
views

## ---- print = FALSE-----------------------------------------------------------
priorMeans <- rep(0, 6)
priorVarcov <- MASS::cov.mve(monthlyReturns)$cov

## ---- print = TRUE------------------------------------------------------------
marketPosterior <- posteriorEst(views = views, sigma = priorVarcov,
 mu = priorMeans, tau = 1/2)
marketPosterior

## ---- print = FALSE-----------------------------------------------------------
finViews <- matrix(ncol = 4, nrow = 1, dimnames = list(NULL, c("C","JPM","BAC","MS")))
finViews[,1:4] <- rep(1/4,4)
views <- addBLViews(finViews, 0.15, 90, views)
views

## ---- print = TRUE------------------------------------------------------------
marketPosterior <- BLPosterior(as.matrix(monthlyReturns), views, tau = 1/2,
	marketIndex = as.matrix(sp500Returns),riskFree = as.matrix(US13wTB))
marketPosterior

## ---- print = TRUE, fig = TRUE, fig.height = 3--------------------------------
optPorts <- optimalPortfolios.fPort(marketPosterior, optimizer = "tangencyPortfolio")
optPorts
weightsPie(optPorts$priorOptimPortfolio)
weightsPie(optPorts$posteriorOptimPortfolio)

## ---- echo=TRUE, print=FALSE, fig=FALSE---------------------------------------
optPorts2 <- optimalPortfolios.fPort(marketPosterior,
		constraints = "minW[1:6]=0.1", optimizer = "minriskPortfolio")
optPorts2

## ---- echo=TRUE, print=FALSE, fig=TRUE----------------------------------------
densityPlots(marketPosterior, assetsSel = "JPM")

## ---- echo=TRUE, print=FALSE--------------------------------------------------
dispersion <- c(.376,.253,.360,.333,.360,.600,.397,.396,.578,.775) / 1000
sigma <- BLCOP:::.symmetricMatrix(dispersion, dim = 4)
caps <- rep(1/4, 4)
mu <- 2.5 * sigma %*% caps
dim(mu) <- NULL
marketDistribution <- mvdistribution("mt", mean = mu, S = sigma, df = 5 )
class(marketDistribution)

## ---- echo=TRUE, print=FALSE--------------------------------------------------
pick <- matrix(0, ncol = 4, nrow = 1, dimnames = list(NULL, c("SP", "FTSE", "CAC", "DAX")))
pick[1,"DAX"] <- 1
viewDist <- list(distribution("unif", min = -0.02, max = 0))
views <- COPViews(pick, viewDist = viewDist, confidences = 0.2, assetNames = c("SP", "FTSE", "CAC", "DAX"))

## ---- echo=TRUE, print=FALSE--------------------------------------------------
newPick <- matrix(0, 1, 2)
dimnames(newPick) <- list(NULL, c("SP", "FTSE"))
newPick[1,] <- c(1, -1) # add a relative view
views <- addCOPViews(newPick, list(distribution("norm", mean = 0.05, sd = 0.02)), 0.5, views)

## ---- echo=TRUE, print=FALSE, fig=TRUE----------------------------------------
marketPosterior <- COPPosterior(marketDistribution, views, numSimulations = 50000)
densityPlots(marketPosterior, assetsSel = 4)

Try the BLCOP package in your browser

Any scripts or data that you put into this service are public.

BLCOP documentation built on Jan. 26, 2021, 1:05 a.m.