TwoAssetsPortfolio        package:fPortfolio        R Documentation

_T_w_o _A_s_s_e_t_s _P_o_r_t_f_o_l_i_o

_D_e_s_c_r_i_p_t_i_o_n:

     A collection and description of functions  to investigate the
     efficient frontier for a two assets portfolio from a given return 
     series in the mean-variance and CVaR sense  when short selling is
     forbidden.  

     The functions are:

       'twoAssetsMarkowitz'  Efficient frontier for Markowitz PF,
       'twoAssetsCVaR'       Efficient frontier for CVaR PF.

_U_s_a_g_e:

     frontierTwoAssetsMarkowitz(x, length = 100, 
             title = NULL, description = NULL) 
     frontierTwoAssetsCVaR(x, length= 100, alpha = 0.05,
             title = NULL, description = NULL) 
             
     ## S3 method for class 'fPFOLIO2':
     print(x, ...)
     ## S3 method for class 'fPFOLIO2':
     plot(x, ...)
     ## S3 method for class 'fPFOLIO2':
     summary(object, ...)

_A_r_g_u_m_e_n_t_s:

   alpha: a numeric value, the confidence interval, by default 0.05. 

description: a character string, assigning a brief description to an 
          '"fPFOLIO"' object. 

  length: the number of equidistand return points on the efficient 
          frontier. 

  object: [summary] - cr an object of class '"fPFOLIO2"'.     

   title: a character string, assigning a title to an '"fPFOLIO"' 
          object. 

       x: [frontier*] - 
           a numeric matrix or multivariate time series consisting of a
          series of returns. 
           [print][plot] - cr an object of class '"fPFOLIO2"'.     

     ...: optional arguments to be passed. 

_V_a_l_u_e:

     'frontierTwoAssetsMarkowitz'
      'frontierTwoAssetsCVaR' 
      return a S4 object class of class '"fPFOLIO2"', with the
     following  slots:

   @call: the matched function call. 

   @data: the input data in form of a data.frame. 

@description: allows for a brief project description. 

 @pfolio: the results as a list returned from the underlying analytical
          results.  

 @method: the selected method used by the optimization algorithm, here
          "Exact Analytical Solution". 

  @model: the model used for the optimization, here "Two Assets 
          Markowitz Portfolio" or "Two Assets CVaR Portfolio. 

  @title: a title string.

  pm, ps: the portfolios mean (the return) and standard deviation (the
          risk) values . 

_A_u_t_h_o_r(_s):

     Diethelm Wuertz for the Rmetrics port.

_R_e_f_e_r_e_n_c_e_s:

     Elton E.J., Gruber M.J. (1991);  _Modern Portfolio Theory and
     Investment Analysis_,  4th Edition, Wiley, NY, pp. 65-93.

_E_x_a_m_p_l_e_s:

     ## SOURCE("fPortfolio.B3-TwoAssetsPortfolio")

     ## Not run: 
     ## berndtInvest -
        xmpPortfolio("\nStart: Load monthly data set of returns > ")
        data(berndtInvest)
        # Select "IBM" and "DEC"
        twoAssets = berndtInvest[, c("IBM", "DEC")]
        rownames(twoAssets) = berndtInvest[, 1]
        head(twoAssets)
        
     ## Compute Efficient Frontier:
        myPortfolio = frontierTwoAssetsMarkowitz(twoAssets)
        
     ## Print Efficient Frontier:
        print(myPortfolio)
         
     ## Plot Efficient Frontier:
        plot(myPortfolio)
        
     ## Compute Efficient Frontier:
        myPortfolio = frontierTwoAssetsCVaR(twoAssets)
        
     ## Print Efficient Frontier:
        print(myPortfolio)
         
     ## Plot Efficient Frontier:
        plot(myPortfolio)
        
       
       
     show =
     function(i,j) { 
     w = (0:100)/100
     alpha = 0.04
     par(mfrow = c(2,2), cex = 0.5)
      
         
        print(c(i, j))
        twoAssets = cbind(berndtInvest[, i], berndtInvest[, j])
        print(head(twoAssets))
       

        means = apply(twoAssets, 2, mean)
        x.Return = y.VaR = y.CVaR = y.CVaRplus = NULL
        for (k in 1:101) {
                     weights = c(w[k], 1-w[k])
                     x.Return = c(x.Return, weights 
                     y.VaR = c(y.VaR, -VaR(twoAssets, weights, alpha))
                     y.CVaR = c(y.CVaR, -CVaR(twoAssets, weights, alpha))
                     y.CVaRplus = c(y.CVaRplus, -CVaRplus(twoAssets, weights, alpha))
             }
             plot(x = range(x.Return), y = range(c(y.VaR, y.CVaR, y.CVaRplus)), 
                     xlab = as.character(i), ylab = as.character(j), type = "n")
             lines(x.Return, as.vector(y.VaR), col ="red")
             lines(x.Return, as.vector(y.CVaR), col = "green")
             lines(x.Return, as.vector(y.CVaRplus), col = "blue")
     }

     par(mfrow = c(1,1))
             
     w = (0:200)/200
     alpha = 0.04
     for (i in 2:17) {
     for (j in (i+1):18) {   
         
        
             twoAssets = cbind(berndtInvest[, i], berndtInvest[, j])
       
             means = apply(twoAssets, 2, mean)
             x = NULL
             y = NULL
             for (k in 1:201) {
                     weights = c(w[k], 1-w[k])
                     x = c(x, weights 
                     y = c(y, -CVaRplus(twoAssets, weights, alpha))
             }
             s = round(100*abs( y[201] - y[1] ) / ( max(y) - min(y)))
             print(c(i, j, s))
             plot(x, y, main = paste(as.character(i), as.character(j)))
     }
     }
             

             i = 5; j = 13
             twoAssets = cbind(berndtInvest[, i], berndtInvest[, j])         
             means = apply(twoAssets, 2, mean)
             x = y = NULL
             for (k in 1:201) {
                     weights = c(w[k], 1-w[k])
                     x = c(x, weights 
                     y = c(y, -VaR(twoAssets, weights, alpha)) }
             s = round(100*abs( y[201] - y[1] ) / ( max(y) - min(y)))
             plot(x, y, main = paste(as.character(i), as.character(j)))
                             
     ## End(Not run)
        

