@Demo public class PortfolioOptimComparisons1Demo extends Object
Using this example. Feeds the same generated return matrix to several optimizer implementations to compare their weights. Rows are observations and columns are assets; keep this order when wrapping a result in PortfolioWeights. This is a numerical comparison without a transaction-cost or execution simulation.
Model and publication. Related theory and the scope of this example are distinguished below.
Implementation in this tutorial. Compares multiple optimizer families on one synthetic return matrix. Black–Litterman combines equilibrium information with views. The wrapper assumes equal market weights, sample means as views and tau=1/T; this demo supplies risk aversion rather than explicit investor views. Other branches use Markowitz, Corvalán, smart-beta assumptions and Lai-style resampling. These are separate models, not interchangeable solver settings.
| Constructor and Description |
|---|
PortfolioOptimComparisons1Demo() |
| Modifier and Type | Method and Description |
|---|---|
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getBlackLitterman(double riskAverse) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getCorvalan2005(double riskAverse,
double relaxation) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getCorvalanSAAM(double relaxation) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getEqualCor(double riskAverse) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getEqualMean(double riskAverse) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getEqualWeights(double riskAverse) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getMarkowitz(double riskAverse) |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getSAAM() |
static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm |
getSOCP(double riskAverse) |
static void |
main(String[] args) |
static dev.nm.algebra.linear.matrix.doubles.Matrix |
randomReturnMatrix(int N,
int T)
Generates a random return matrix.
|
public static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getMarkowitz(double riskAverse)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getCorvalan2005(double riskAverse,
double relaxation)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getSOCP(double riskAverse)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getEqualCor(double riskAverse)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getEqualMean(double riskAverse)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getEqualWeights(double riskAverse)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getSAAM()
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getCorvalanSAAM(double relaxation)
throws Exception
Exceptionpublic static tech.nmfin.portfoliooptimization.PortfolioOptimizationAlgorithm getBlackLitterman(double riskAverse)
throws Exception
Exceptionpublic static dev.nm.algebra.linear.matrix.doubles.Matrix randomReturnMatrix(int N,
int T)
N - the number of stocksT - the number of observationsCopyright © 2026. All rights reserved.