public double calculatePortfolioVariance(final FinancePortfolio weightsPortfolio) { final List<BigDecimal> tmpWeights = weightsPortfolio.getWeights(); final BasicMatrix tmpAssetWeights = MATRIX_FACTORY.columns(tmpWeights); return new MarketEquilibrium(this.getCovariances()) .calculatePortfolioVariance(tmpAssetWeights) .doubleValue(); }
public double calculatePortfolioReturn(final FinancePortfolio weightsPortfolio) { final List<BigDecimal> tmpWeights = weightsPortfolio.getWeights(); final BasicMatrix tmpAssetWeights = MATRIX_FACTORY.columns(tmpWeights); final BasicMatrix tmpAssetReturns = this.getAssetReturns(); return MarketEquilibrium.calculatePortfolioReturn(tmpAssetWeights, tmpAssetReturns) .doubleValue(); }
public SimplePortfolio(final Context aContext, final FinancePortfolio weightsPortfolio) { super(); myCorrelations = aContext.getCorrelations(); final BasicMatrix tmpCovariances = aContext.getCovariances(); final BasicMatrix tmpAssetReturns = aContext.getAssetReturns(); final List<BigDecimal> tmpWeights = weightsPortfolio.getWeights(); if ((tmpWeights.size() != myCorrelations.countRows()) || (tmpWeights.size() != myCorrelations.countColumns())) { throw new IllegalArgumentException("Input dimensions don't match!"); } myComponents = new ArrayList<SimpleAsset>(tmpWeights.size()); for (int i = 0; i < tmpWeights.size(); i++) { final double tmpMeanReturn = tmpAssetReturns.doubleValue(i, 0); final double tmpVolatilty = Math.sqrt(tmpCovariances.doubleValue(i, i)); final BigDecimal tmpWeight = tmpWeights.get(i); myComponents.add(new SimpleAsset(tmpMeanReturn, tmpVolatilty, tmpWeight)); } }