Efficient Frontier#

This tutorial uses the MeanRisk optimization to find an ensemble of portfolios belonging to the Mean-Variance efficient frontier (pareto font).

Data#

We load the S&P 500 dataset composed of the daily prices of 20 assets from the S&P 500 Index composition starting from 1990-01-02 up to 2022-12-28:

import numpy as np
from plotly.io import show
from sklearn.model_selection import train_test_split

from skfolio import PerfMeasure, RatioMeasure, RiskMeasure
from skfolio.datasets import load_sp500_dataset
from skfolio.optimization import MeanRisk
from skfolio.preprocessing import prices_to_returns

prices = load_sp500_dataset()

X = prices_to_returns(prices)
X_train, X_test = train_test_split(X, test_size=0.33, shuffle=False)

Model#

We create the Mean-Variance model and then fit it on the training set. The parameter efficient_frontier_size=30 is used to find 30 portfolios on the entire efficient frontier:

model = MeanRisk(
    risk_measure=RiskMeasure.VARIANCE,
    efficient_frontier_size=30,
    portfolio_params=dict(name="Variance"),
)
model.fit(X_train)
print(model.weights_.shape)
(30, 20)

Prediction#

We predict this model on both the training set and the test set. The predict method returns the Population of 30 Portfolio:

population_train = model.predict(X_train)
population_test = model.predict(X_test)

Analysis#

For improved analysis, we add a “Train” and “Test” tag to the portfolios and concatenate the training and the test populations:

population_train.set_portfolio_params(tag="Train")
population_test.set_portfolio_params(tag="Test")

population = population_train + population_test

fig = population.plot_measures(
    x=RiskMeasure.ANNUALIZED_VARIANCE,
    y=PerfMeasure.ANNUALIZED_MEAN,
    color_scale=RatioMeasure.ANNUALIZED_SHARPE_RATIO,
    hover_measures=[RiskMeasure.MAX_DRAWDOWN, RatioMeasure.ANNUALIZED_SORTINO_RATIO],
)
show(fig)

Let’s plot the composition of the 30 portfolios:

population_train.plot_composition()


Let’s print the Sharpe Ratio of the 30 portfolios on the test set:

population_test.measures(measure=RatioMeasure.ANNUALIZED_SHARPE_RATIO)
array([0.91785162, 0.93000375, 0.9401232 , 0.95027284, 0.96861483,
       0.98463685, 0.9983657 , 1.00992555, 1.01943433, 1.02702131,
       1.032813  , 1.03704654, 1.03993049, 1.04204356, 1.0430764 ,
       1.04289017, 1.04158213, 1.03774863, 1.02943678, 1.02092595,
       1.01241175, 1.00356473, 0.97964062, 0.93749217, 0.87986871,
       0.78090544, 0.68550154, 0.59858003, 0.53398775, 0.55455742])

Finally, we can show a full summary of the 30 portfolios evaluated on the test set:

population.summary()
ptf0 - Variance ptf1 - Variance ptf2 - Variance ptf3 - Variance ptf4 - Variance ptf5 - Variance ptf6 - Variance ptf7 - Variance ptf8 - Variance ptf9 - Variance ptf10 - Variance ptf11 - Variance ptf12 - Variance ptf13 - Variance ptf14 - Variance ptf15 - Variance ptf16 - Variance ptf17 - Variance ptf18 - Variance ptf19 - Variance ptf20 - Variance ptf21 - Variance ptf22 - Variance ptf23 - Variance ptf24 - Variance ptf25 - Variance ptf26 - Variance ptf27 - Variance ptf28 - Variance ptf29 - Variance ptf0 - Variance ptf1 - Variance ptf2 - Variance ptf3 - Variance ptf4 - Variance ptf5 - Variance ptf6 - Variance ptf7 - Variance ptf8 - Variance ptf9 - Variance ptf10 - Variance ptf11 - Variance ptf12 - Variance ptf13 - Variance ptf14 - Variance ptf15 - Variance ptf16 - Variance ptf17 - Variance ptf18 - Variance ptf19 - Variance ptf20 - Variance ptf21 - Variance ptf22 - Variance ptf23 - Variance ptf24 - Variance ptf25 - Variance ptf26 - Variance ptf27 - Variance ptf28 - Variance ptf29 - Variance
Mean 0.062% 0.065% 0.068% 0.071% 0.074% 0.076% 0.079% 0.082% 0.085% 0.088% 0.091% 0.094% 0.096% 0.099% 0.10% 0.11% 0.11% 0.11% 0.11% 0.12% 0.12% 0.12% 0.13% 0.13% 0.13% 0.13% 0.14% 0.14% 0.14% 0.15% 0.054% 0.055% 0.056% 0.057% 0.059% 0.061% 0.063% 0.064% 0.066% 0.068% 0.070% 0.071% 0.073% 0.075% 0.077% 0.078% 0.080% 0.082% 0.083% 0.085% 0.086% 0.088% 0.088% 0.087% 0.086% 0.083% 0.081% 0.079% 0.078% 0.090%
Annualized Mean 15.66% 16.38% 17.10% 17.82% 18.54% 19.26% 19.99% 20.71% 21.43% 22.15% 22.87% 23.59% 24.32% 25.04% 25.76% 26.48% 27.20% 27.92% 28.65% 29.37% 30.09% 30.81% 31.53% 32.25% 32.98% 33.70% 34.42% 35.14% 35.86% 36.58% 13.68% 13.93% 14.18% 14.46% 14.90% 15.34% 15.78% 16.22% 16.66% 17.10% 17.53% 17.97% 18.41% 18.86% 19.31% 19.74% 20.16% 20.58% 20.95% 21.32% 21.71% 22.10% 22.16% 21.92% 21.59% 20.98% 20.37% 19.78% 19.56% 22.73%
Variance 0.011% 0.011% 0.011% 0.011% 0.012% 0.012% 0.012% 0.013% 0.014% 0.014% 0.015% 0.016% 0.017% 0.018% 0.019% 0.020% 0.022% 0.023% 0.025% 0.026% 0.028% 0.030% 0.032% 0.034% 0.038% 0.044% 0.053% 0.066% 0.084% 0.12% 0.0088% 0.0089% 0.0090% 0.0092% 0.0094% 0.0096% 0.0099% 0.010% 0.011% 0.011% 0.011% 0.012% 0.012% 0.013% 0.014% 0.014% 0.015% 0.016% 0.016% 0.017% 0.018% 0.019% 0.020% 0.022% 0.024% 0.029% 0.035% 0.043% 0.053% 0.067%
Annualized Variance 2.76% 2.78% 2.81% 2.86% 2.94% 3.03% 3.15% 3.28% 3.44% 3.62% 3.82% 4.04% 4.29% 4.55% 4.84% 5.14% 5.47% 5.82% 6.20% 6.60% 7.03% 7.48% 7.98% 8.63% 9.48% 11.00% 13.38% 16.70% 21.22% 29.72% 2.22% 2.24% 2.28% 2.32% 2.37% 2.43% 2.50% 2.58% 2.67% 2.77% 2.88% 3.00% 3.13% 3.28% 3.43% 3.58% 3.75% 3.93% 4.14% 4.36% 4.60% 4.85% 5.12% 5.47% 6.02% 7.22% 8.83% 10.92% 13.41% 16.80%
Semi-Variance 0.0054% 0.0055% 0.0055% 0.0056% 0.0058% 0.0060% 0.0062% 0.0065% 0.0068% 0.0072% 0.0076% 0.0080% 0.0085% 0.0090% 0.0096% 0.010% 0.011% 0.012% 0.012% 0.013% 0.014% 0.015% 0.016% 0.017% 0.019% 0.021% 0.026% 0.032% 0.041% 0.058% 0.0045% 0.0046% 0.0046% 0.0047% 0.0048% 0.0049% 0.0051% 0.0052% 0.0054% 0.0056% 0.0058% 0.0060% 0.0063% 0.0065% 0.0068% 0.0071% 0.0074% 0.0077% 0.0082% 0.0086% 0.0091% 0.0096% 0.010% 0.011% 0.012% 0.014% 0.017% 0.021% 0.026% 0.034%
Annualized Semi-Variance 1.37% 1.37% 1.39% 1.42% 1.46% 1.50% 1.56% 1.63% 1.71% 1.80% 1.90% 2.02% 2.14% 2.27% 2.41% 2.56% 2.73% 2.90% 3.09% 3.28% 3.50% 3.72% 3.97% 4.29% 4.69% 5.41% 6.56% 8.17% 10.39% 14.54% 1.14% 1.16% 1.17% 1.19% 1.22% 1.25% 1.28% 1.32% 1.36% 1.41% 1.46% 1.52% 1.58% 1.65% 1.72% 1.79% 1.87% 1.95% 2.06% 2.16% 2.28% 2.41% 2.54% 2.70% 2.96% 3.52% 4.29% 5.30% 6.55% 8.50%
Standard Deviation 1.05% 1.05% 1.06% 1.07% 1.08% 1.10% 1.12% 1.14% 1.17% 1.20% 1.23% 1.27% 1.30% 1.34% 1.39% 1.43% 1.47% 1.52% 1.57% 1.62% 1.67% 1.72% 1.78% 1.85% 1.94% 2.09% 2.30% 2.57% 2.90% 3.43% 0.94% 0.94% 0.95% 0.96% 0.97% 0.98% 1.00% 1.01% 1.03% 1.05% 1.07% 1.09% 1.12% 1.14% 1.17% 1.19% 1.22% 1.25% 1.28% 1.32% 1.35% 1.39% 1.43% 1.47% 1.55% 1.69% 1.87% 2.08% 2.31% 2.58%
Annualized Standard Deviation 16.62% 16.67% 16.76% 16.92% 17.13% 17.41% 17.74% 18.12% 18.55% 19.03% 19.55% 20.11% 20.70% 21.33% 21.99% 22.68% 23.39% 24.13% 24.90% 25.69% 26.51% 27.35% 28.25% 29.38% 30.80% 33.17% 36.58% 40.87% 46.06% 54.52% 14.91% 14.98% 15.09% 15.22% 15.39% 15.58% 15.81% 16.06% 16.34% 16.65% 16.98% 17.33% 17.71% 18.10% 18.51% 18.93% 19.36% 19.83% 20.35% 20.89% 21.45% 22.02% 22.63% 23.38% 24.53% 26.87% 29.72% 33.05% 36.63% 40.99%
Semi-Deviation 0.74% 0.74% 0.74% 0.75% 0.76% 0.77% 0.79% 0.81% 0.82% 0.85% 0.87% 0.89% 0.92% 0.95% 0.98% 1.01% 1.04% 1.07% 1.11% 1.14% 1.18% 1.22% 1.25% 1.30% 1.36% 1.47% 1.61% 1.80% 2.03% 2.40% 0.67% 0.68% 0.68% 0.69% 0.69% 0.70% 0.71% 0.72% 0.73% 0.75% 0.76% 0.78% 0.79% 0.81% 0.83% 0.84% 0.86% 0.88% 0.90% 0.93% 0.95% 0.98% 1.00% 1.03% 1.08% 1.18% 1.30% 1.45% 1.61% 1.84%
Annualized Semi-Deviation 11.69% 11.72% 11.79% 11.91% 12.07% 12.27% 12.51% 12.78% 13.09% 13.43% 13.80% 14.20% 14.62% 15.06% 15.53% 16.01% 16.51% 17.03% 17.57% 18.12% 18.70% 19.29% 19.92% 20.70% 21.67% 23.27% 25.61% 28.58% 32.23% 38.13% 10.69% 10.75% 10.82% 10.92% 11.03% 11.16% 11.31% 11.48% 11.66% 11.87% 12.08% 12.32% 12.57% 12.83% 13.10% 13.37% 13.66% 13.97% 14.34% 14.71% 15.11% 15.52% 15.92% 16.42% 17.19% 18.77% 20.71% 23.02% 25.59% 29.16%
Mean Absolute Deviation 0.74% 0.74% 0.74% 0.75% 0.76% 0.77% 0.79% 0.81% 0.83% 0.85% 0.87% 0.90% 0.93% 0.96% 0.99% 1.02% 1.06% 1.09% 1.13% 1.16% 1.20% 1.24% 1.28% 1.33% 1.39% 1.49% 1.62% 1.79% 2.00% 2.33% 0.61% 0.61% 0.61% 0.62% 0.62% 0.63% 0.64% 0.66% 0.67% 0.69% 0.70% 0.72% 0.74% 0.76% 0.78% 0.80% 0.82% 0.85% 0.87% 0.90% 0.93% 0.96% 0.99% 1.03% 1.09% 1.19% 1.31% 1.45% 1.59% 1.71%
CVaR at 95% 2.31% 2.32% 2.33% 2.35% 2.38% 2.42% 2.46% 2.51% 2.57% 2.63% 2.70% 2.78% 2.86% 2.94% 3.03% 3.13% 3.23% 3.33% 3.43% 3.53% 3.64% 3.76% 3.88% 4.04% 4.24% 4.57% 5.04% 5.63% 6.34% 7.53% 2.16% 2.17% 2.19% 2.21% 2.23% 2.26% 2.29% 2.32% 2.36% 2.40% 2.44% 2.49% 2.54% 2.59% 2.64% 2.69% 2.74% 2.80% 2.87% 2.94% 3.01% 3.09% 3.17% 3.25% 3.40% 3.69% 4.07% 4.54% 5.06% 5.91%
EVaR at 95% 4.23% 4.19% 4.16% 4.14% 4.14% 4.16% 4.20% 4.27% 4.36% 4.47% 4.59% 4.73% 4.88% 5.03% 5.20% 5.37% 5.55% 5.74% 5.95% 6.16% 6.37% 6.59% 6.80% 7.03% 7.29% 8.36% 10.21% 12.35% 14.79% 18.69% 4.63% 4.66% 4.68% 4.71% 4.75% 4.79% 4.83% 4.87% 4.92% 4.96% 5.01% 5.06% 5.11% 5.17% 5.24% 5.28% 5.34% 5.42% 5.51% 5.61% 5.74% 5.88% 5.88% 5.81% 5.88% 6.72% 7.97% 9.35% 10.93% 13.85%
Worst Realization 8.35% 8.18% 8.00% 7.84% 7.71% 7.58% 7.79% 8.16% 8.53% 8.90% 9.28% 9.65% 10.02% 10.39% 10.76% 11.13% 11.50% 11.91% 12.36% 12.81% 13.26% 13.71% 14.06% 14.33% 14.21% 15.83% 20.22% 24.87% 29.84% 38.78% 8.61% 8.73% 8.84% 8.96% 9.08% 9.20% 9.33% 9.45% 9.57% 9.69% 9.81% 9.93% 10.06% 10.20% 10.34% 10.45% 10.57% 10.73% 10.91% 11.11% 11.38% 11.65% 11.55% 11.08% 10.44% 13.12% 16.01% 18.98% 22.31% 28.58%
CDaR at 95% 18.45% 18.90% 19.43% 20.03% 20.82% 21.66% 22.58% 23.59% 24.67% 25.79% 26.96% 28.16% 29.38% 30.59% 31.79% 32.87% 33.97% 35.11% 36.26% 37.45% 38.74% 40.06% 40.74% 41.06% 41.47% 42.52% 45.87% 52.09% 63.28% 94.87% 13.88% 13.72% 13.59% 13.48% 13.26% 13.10% 12.97% 12.90% 12.99% 13.15% 13.33% 13.55% 13.80% 14.10% 14.44% 14.87% 15.39% 15.98% 16.72% 17.61% 18.56% 19.56% 21.29% 23.95% 26.96% 30.50% 35.00% 39.41% 44.13% 60.36%
MAX Drawdown 33.40% 34.61% 35.81% 37.07% 38.61% 40.15% 41.68% 43.22% 44.77% 47.16% 49.82% 52.48% 55.13% 57.77% 60.37% 62.77% 65.20% 67.75% 70.33% 72.96% 75.82% 78.68% 80.90% 82.54% 83.69% 83.30% 82.91% 81.65% 83.54% 132.38% 33.59% 33.62% 33.65% 33.65% 33.58% 33.50% 33.43% 33.36% 33.29% 33.22% 33.15% 33.08% 33.01% 32.95% 32.88% 32.58% 32.33% 32.34% 32.80% 33.42% 34.05% 34.67% 36.26% 38.75% 41.26% 44.24% 50.08% 54.83% 56.35% 76.40%
Average Drawdown 3.75% 3.71% 3.71% 3.75% 3.83% 3.94% 4.07% 4.24% 4.42% 4.61% 4.81% 5.03% 5.25% 5.48% 5.72% 5.95% 6.19% 6.45% 6.72% 7.00% 7.31% 7.63% 8.00% 8.53% 9.32% 10.31% 11.68% 13.88% 17.25% 25.90% 2.86% 2.83% 2.80% 2.79% 2.74% 2.71% 2.69% 2.68% 2.71% 2.77% 2.83% 2.91% 3.00% 3.11% 3.23% 3.40% 3.57% 3.77% 4.00% 4.25% 4.52% 4.79% 5.21% 5.84% 6.73% 8.12% 10.00% 12.28% 14.52% 16.76%
EDaR at 95% 22.41% 23.02% 23.75% 24.58% 25.70% 26.91% 28.18% 29.51% 30.90% 32.34% 33.82% 35.33% 36.87% 38.43% 39.98% 41.38% 42.83% 44.36% 45.92% 47.52% 49.27% 51.04% 52.30% 53.23% 53.91% 53.67% 54.46% 57.41% 67.13% 106.15% 19.59% 19.56% 19.55% 19.52% 19.41% 19.34% 19.28% 19.25% 19.27% 19.31% 19.37% 19.44% 19.53% 19.65% 19.79% 19.91% 20.08% 20.40% 20.99% 21.72% 22.52% 23.36% 24.90% 27.26% 29.99% 33.30% 38.10% 42.81% 48.14% 64.47%
First Lower Partial Moment 0.37% 0.37% 0.37% 0.38% 0.38% 0.39% 0.39% 0.40% 0.41% 0.42% 0.44% 0.45% 0.46% 0.48% 0.50% 0.51% 0.53% 0.55% 0.56% 0.58% 0.60% 0.62% 0.64% 0.67% 0.70% 0.74% 0.81% 0.89% 1.00% 1.16% 0.30% 0.30% 0.31% 0.31% 0.31% 0.32% 0.32% 0.33% 0.34% 0.34% 0.35% 0.36% 0.37% 0.38% 0.39% 0.40% 0.41% 0.42% 0.44% 0.45% 0.46% 0.48% 0.49% 0.51% 0.54% 0.59% 0.66% 0.73% 0.80% 0.85%
Ulcer Index 0.059 0.060 0.061 0.063 0.065 0.067 0.070 0.073 0.076 0.079 0.083 0.086 0.090 0.094 0.097 0.10 0.10 0.11 0.11 0.12 0.12 0.13 0.13 0.13 0.14 0.15 0.17 0.20 0.24 0.36 0.046 0.046 0.046 0.046 0.045 0.044 0.044 0.044 0.044 0.045 0.046 0.047 0.048 0.049 0.051 0.053 0.055 0.058 0.061 0.065 0.069 0.072 0.079 0.088 0.100 0.12 0.14 0.16 0.19 0.24
Gini Mean Difference 1.09% 1.09% 1.10% 1.11% 1.12% 1.14% 1.16% 1.19% 1.22% 1.25% 1.29% 1.33% 1.37% 1.41% 1.46% 1.50% 1.55% 1.60% 1.66% 1.71% 1.76% 1.82% 1.88% 1.96% 2.05% 2.19% 2.40% 2.66% 2.98% 3.49% 0.91% 0.91% 0.92% 0.93% 0.94% 0.95% 0.97% 0.99% 1.01% 1.03% 1.05% 1.08% 1.11% 1.13% 1.17% 1.20% 1.23% 1.26% 1.30% 1.34% 1.38% 1.42% 1.46% 1.52% 1.60% 1.75% 1.93% 2.13% 2.35% 2.54%
Value at Risk at 95% 1.52% 1.53% 1.54% 1.57% 1.59% 1.59% 1.59% 1.63% 1.68% 1.73% 1.78% 1.84% 1.91% 1.97% 2.03% 2.07% 2.12% 2.19% 2.24% 2.32% 2.40% 2.49% 2.58% 2.66% 2.80% 2.97% 3.20% 3.57% 4.02% 4.82% 1.35% 1.34% 1.36% 1.36% 1.35% 1.38% 1.39% 1.42% 1.45% 1.47% 1.48% 1.51% 1.54% 1.58% 1.64% 1.68% 1.73% 1.78% 1.82% 1.88% 1.93% 2.01% 2.06% 2.12% 2.21% 2.43% 2.71% 2.99% 3.29% 3.60%
Drawdown at Risk at 95% 14.10% 14.49% 14.66% 15.01% 15.22% 15.35% 15.64% 16.40% 17.04% 17.80% 18.37% 19.09% 19.83% 20.52% 21.17% 21.67% 22.41% 23.20% 23.84% 24.89% 25.77% 26.62% 27.20% 27.77% 29.62% 32.92% 37.36% 44.20% 55.01% 79.05% 10.58% 10.54% 10.49% 10.33% 10.22% 10.14% 10.06% 9.94% 9.92% 9.90% 9.74% 10.01% 10.23% 10.50% 10.93% 11.54% 12.15% 12.79% 13.57% 14.42% 15.34% 16.36% 17.62% 19.54% 22.15% 25.98% 29.08% 32.80% 37.57% 51.44%
Entropic Risk Measure at 95% 3.00 3.00 3.00 3.00 3.00 3.00 3.00 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 3.00 2.99 2.99 2.99 2.99 2.99 2.99 2.99 2.99 3.00 3.00 3.00 3.00 3.00
Fourth Central Moment 0.000016% 0.000016% 0.000017% 0.000017% 0.000018% 0.000019% 0.000021% 0.000022% 0.000024% 0.000026% 0.000028% 0.000031% 0.000034% 0.000037% 0.000041% 0.000045% 0.000050% 0.000055% 0.000062% 0.000070% 0.000079% 0.000088% 0.000097% 0.00011% 0.00012% 0.00016% 0.00027% 0.00047% 0.00085% 0.0020% 0.000016% 0.000016% 0.000017% 0.000018% 0.000019% 0.000020% 0.000021% 0.000022% 0.000023% 0.000024% 0.000026% 0.000028% 0.000029% 0.000031% 0.000033% 0.000035% 0.000037% 0.000040% 0.000043% 0.000046% 0.000050% 0.000054% 0.000058% 0.000062% 0.000070% 0.000097% 0.00014% 0.00023% 0.00037% 0.00077%
Fourth Lower Partial Moment 0.000006% 0.000006% 0.000006% 0.000006% 0.000006% 0.000006% 0.000007% 0.000007% 0.000007% 0.000008% 0.000009% 0.000010% 0.000011% 0.000012% 0.000014% 0.000016% 0.000018% 0.000020% 0.000023% 0.000026% 0.000029% 0.000033% 0.000038% 0.000046% 0.000056% 0.000088% 0.00016% 0.00031% 0.00059% 0.0014% 0.000008% 0.000008% 0.000008% 0.000008% 0.000008% 0.000009% 0.000009% 0.000009% 0.000009% 0.000010% 0.000010% 0.000011% 0.000011% 0.000011% 0.000012% 0.000012% 0.000013% 0.000014% 0.000015% 0.000016% 0.000017% 0.000019% 0.000020% 0.000021% 0.000024% 0.000035% 0.000057% 0.000098% 0.00017% 0.00042%
Skew 26.18% 27.63% 28.80% 29.68% 30.29% 30.54% 30.46% 30.07% 29.42% 28.54% 27.50% 26.32% 25.06% 23.76% 22.43% 21.04% 19.81% 18.96% 18.23% 17.47% 16.62% 15.72% 13.34% 9.76% 5.83% -2.14% -11.06% -19.84% -27.79% -37.39% 0.11% 1.66% 3.43% 5.49% 8.23% 11.10% 13.99% 16.88% 19.70% 22.40% 24.93% 27.31% 29.48% 31.32% 33.01% 35.06% 36.87% 37.81% 36.87% 35.75% 34.15% 32.59% 32.96% 34.39% 35.10% 34.55% 32.65% 28.74% 21.77% -2.90%
Kurtosis 1291.65% 1314.19% 1327.57% 1332.93% 1335.68% 1330.10% 1317.27% 1298.53% 1275.27% 1248.90% 1220.76% 1191.72% 1162.62% 1133.92% 1106.01% 1077.58% 1053.12% 1037.16% 1030.03% 1021.73% 1010.78% 999.43% 969.27% 922.64% 869.32% 859.88% 940.30% 1060.15% 1193.52% 1428.95% 2041.35% 2076.87% 2102.02% 2117.46% 2126.55% 2124.76% 2112.60% 2091.31% 2061.98% 2025.82% 1984.31% 1938.84% 1890.89% 1843.01% 1794.00% 1742.88% 1695.44% 1648.82% 1589.85% 1536.43% 1494.34% 1453.67% 1394.40% 1315.91% 1235.13% 1177.90% 1176.14% 1210.04% 1301.37% 1739.55%
Sharpe Ratio 0.059 0.062 0.064 0.066 0.068 0.070 0.071 0.072 0.073 0.073 0.074 0.074 0.074 0.074 0.074 0.074 0.073 0.073 0.072 0.072 0.072 0.071 0.070 0.069 0.067 0.064 0.059 0.054 0.049 0.042 0.058 0.059 0.059 0.060 0.061 0.062 0.063 0.064 0.064 0.065 0.065 0.065 0.066 0.066 0.066 0.066 0.066 0.065 0.065 0.064 0.064 0.063 0.062 0.059 0.055 0.049 0.043 0.038 0.034 0.035
Annualized Sharpe Ratio 0.94 0.98 1.02 1.05 1.08 1.11 1.13 1.14 1.16 1.16 1.17 1.17 1.17 1.17 1.17 1.17 1.16 1.16 1.15 1.14 1.14 1.13 1.12 1.10 1.07 1.02 0.94 0.86 0.78 0.67 0.92 0.93 0.94 0.95 0.97 0.98 1.00 1.01 1.02 1.03 1.03 1.04 1.04 1.04 1.04 1.04 1.04 1.04 1.03 1.02 1.01 1.00 0.98 0.94 0.88 0.78 0.69 0.60 0.53 0.55
Sortino Ratio 0.084 0.088 0.091 0.094 0.097 0.099 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.100 0.098 0.096 0.091 0.085 0.077 0.070 0.060 0.081 0.082 0.083 0.083 0.085 0.087 0.088 0.089 0.090 0.091 0.091 0.092 0.092 0.093 0.093 0.093 0.093 0.093 0.092 0.091 0.091 0.090 0.088 0.084 0.079 0.070 0.062 0.054 0.048 0.049
Annualized Sortino Ratio 1.34 1.40 1.45 1.50 1.54 1.57 1.60 1.62 1.64 1.65 1.66 1.66 1.66 1.66 1.66 1.65 1.65 1.64 1.63 1.62 1.61 1.60 1.58 1.56 1.52 1.45 1.34 1.23 1.11 0.96 1.28 1.30 1.31 1.32 1.35 1.37 1.40 1.41 1.43 1.44 1.45 1.46 1.47 1.47 1.47 1.48 1.48 1.47 1.46 1.45 1.44 1.42 1.39 1.33 1.26 1.12 0.98 0.86 0.76 0.78
Mean Absolute Deviation Ratio 0.084 0.088 0.091 0.094 0.097 0.099 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.10 0.099 0.099 0.098 0.096 0.094 0.090 0.084 0.078 0.071 0.062 0.090 0.091 0.092 0.093 0.095 0.096 0.097 0.098 0.099 0.099 0.099 0.099 0.099 0.099 0.098 0.098 0.097 0.096 0.095 0.094 0.093 0.092 0.089 0.085 0.079 0.070 0.062 0.054 0.049 0.053
First Lower Partial Moment Ratio 0.17 0.18 0.18 0.19 0.19 0.20 0.20 0.20 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.21 0.20 0.20 0.20 0.20 0.20 0.20 0.20 0.19 0.19 0.18 0.17 0.16 0.14 0.12 0.18 0.18 0.18 0.19 0.19 0.19 0.19 0.20 0.20 0.20 0.20 0.20 0.20 0.20 0.20 0.20 0.19 0.19 0.19 0.19 0.19 0.18 0.18 0.17 0.16 0.14 0.12 0.11 0.098 0.11
Value at Risk Ratio at 95% 0.041 0.042 0.044 0.045 0.046 0.048 0.050 0.050 0.051 0.051 0.051 0.051 0.050 0.050 0.050 0.051 0.051 0.051 0.051 0.050 0.050 0.049 0.049 0.048 0.047 0.045 0.043 0.039 0.035 0.030 0.040 0.041 0.041 0.042 0.044 0.044 0.045 0.045 0.046 0.046 0.047 0.047 0.047 0.047 0.047 0.047 0.046 0.046 0.046 0.045 0.045 0.044 0.043 0.041 0.039 0.034 0.030 0.026 0.024 0.025
CVaR Ratio at 95% 0.027 0.028 0.029 0.030 0.031 0.032 0.032 0.033 0.033 0.033 0.034 0.034 0.034 0.034 0.034 0.034 0.033 0.033 0.033 0.033 0.033 0.033 0.032 0.032 0.031 0.029 0.027 0.025 0.022 0.019 0.025 0.025 0.026 0.026 0.027 0.027 0.027 0.028 0.028 0.028 0.029 0.029 0.029 0.029 0.029 0.029 0.029 0.029 0.029 0.029 0.029 0.028 0.028 0.027 0.025 0.023 0.020 0.017 0.015 0.015
Entropic Risk Measure Ratio at 95% 0.00021 0.00022 0.00023 0.00024 0.00025 0.00026 0.00026 0.00027 0.00028 0.00029 0.00030 0.00031 0.00032 0.00033 0.00034 0.00035 0.00036 0.00037 0.00038 0.00039 0.00040 0.00041 0.00042 0.00043 0.00044 0.00045 0.00046 0.00047 0.00048 0.00048 0.00018 0.00018 0.00019 0.00019 0.00020 0.00020 0.00021 0.00021 0.00022 0.00023 0.00023 0.00024 0.00024 0.00025 0.00026 0.00026 0.00027 0.00027 0.00028 0.00028 0.00029 0.00029 0.00029 0.00029 0.00029 0.00028 0.00027 0.00026 0.00026 0.00030
EVaR Ratio at 95% 0.015 0.016 0.016 0.017 0.018 0.018 0.019 0.019 0.020 0.020 0.020 0.020 0.020 0.020 0.020 0.020 0.019 0.019 0.019 0.019 0.019 0.019 0.018 0.018 0.018 0.016 0.013 0.011 0.0096 0.0078 0.012 0.012 0.012 0.012 0.012 0.013 0.013 0.013 0.013 0.014 0.014 0.014 0.014 0.014 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.012 0.010 0.0084 0.0071 0.0065
Worst Realization Ratio 0.0074 0.0079 0.0085 0.0090 0.0095 0.010 0.010 0.010 0.0100 0.0099 0.0098 0.0097 0.0096 0.0096 0.0095 0.0094 0.0094 0.0093 0.0092 0.0091 0.0090 0.0089 0.0089 0.0089 0.0092 0.0084 0.0068 0.0056 0.0048 0.0037 0.0063 0.0063 0.0064 0.0064 0.0065 0.0066 0.0067 0.0068 0.0069 0.0070 0.0071 0.0072 0.0073 0.0073 0.0074 0.0075 0.0076 0.0076 0.0076 0.0076 0.0076 0.0075 0.0076 0.0078 0.0082 0.0063 0.0051 0.0041 0.0035 0.0032
Drawdown at Risk Ratio at 95% 0.0044 0.0045 0.0046 0.0047 0.0048 0.0050 0.0051 0.0050 0.0050 0.0049 0.0049 0.0049 0.0049 0.0048 0.0048 0.0048 0.0048 0.0048 0.0048 0.0047 0.0046 0.0046 0.0046 0.0046 0.0044 0.0041 0.0037 0.0032 0.0026 0.0018 0.0051 0.0052 0.0054 0.0056 0.0058 0.0060 0.0062 0.0065 0.0067 0.0069 0.0071 0.0071 0.0071 0.0071 0.0070 0.0068 0.0066 0.0064 0.0061 0.0059 0.0056 0.0054 0.0050 0.0045 0.0039 0.0032 0.0028 0.0024 0.0021 0.0018
CDaR Ratio at 95% 0.0034 0.0034 0.0035 0.0035 0.0035 0.0035 0.0035 0.0035 0.0034 0.0034 0.0034 0.0033 0.0033 0.0032 0.0032 0.0032 0.0032 0.0032 0.0031 0.0031 0.0031 0.0031 0.0031 0.0031 0.0032 0.0031 0.0030 0.0027 0.0022 0.0015 0.0039 0.0040 0.0041 0.0043 0.0045 0.0046 0.0048 0.0050 0.0051 0.0052 0.0052 0.0053 0.0053 0.0053 0.0053 0.0053 0.0052 0.0051 0.0050 0.0048 0.0046 0.0045 0.0041 0.0036 0.0032 0.0027 0.0023 0.0020 0.0018 0.0015
Calmar Ratio 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0019 0.0018 0.0018 0.0018 0.0017 0.0017 0.0017 0.0017 0.0016 0.0016 0.0016 0.0016 0.0016 0.0015 0.0016 0.0016 0.0016 0.0016 0.0017 0.0017 0.0011 0.0016 0.0016 0.0017 0.0017 0.0018 0.0018 0.0019 0.0019 0.0020 0.0020 0.0021 0.0022 0.0022 0.0023 0.0023 0.0024 0.0025 0.0025 0.0025 0.0025 0.0025 0.0025 0.0024 0.0022 0.0021 0.0019 0.0016 0.0014 0.0014 0.0012
Average Drawdown Ratio 0.017 0.018 0.018 0.019 0.019 0.019 0.019 0.019 0.019 0.019 0.019 0.019 0.018 0.018 0.018 0.018 0.017 0.017 0.017 0.017 0.016 0.016 0.016 0.015 0.014 0.013 0.012 0.010 0.0083 0.0056 0.019 0.020 0.020 0.021 0.022 0.022 0.023 0.024 0.024 0.025 0.025 0.025 0.024 0.024 0.024 0.023 0.022 0.022 0.021 0.020 0.019 0.018 0.017 0.015 0.013 0.010 0.0081 0.0064 0.0053 0.0054
EDaR Ratio at 95% 0.0028 0.0028 0.0029 0.0029 0.0029 0.0028 0.0028 0.0028 0.0028 0.0027 0.0027 0.0026 0.0026 0.0026 0.0026 0.0025 0.0025 0.0025 0.0025 0.0025 0.0024 0.0024 0.0024 0.0024 0.0024 0.0025 0.0025 0.0024 0.0021 0.0014 0.0028 0.0028 0.0029 0.0029 0.0030 0.0031 0.0032 0.0033 0.0034 0.0035 0.0036 0.0037 0.0037 0.0038 0.0039 0.0039 0.0040 0.0040 0.0040 0.0039 0.0038 0.0038 0.0035 0.0032 0.0029 0.0025 0.0021 0.0018 0.0016 0.0014
Ulcer Index Ratio 0.010 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.011 0.010 0.010 0.010 0.010 0.010 0.010 0.0099 0.0098 0.0097 0.0095 0.0092 0.0087 0.0081 0.0070 0.0058 0.0040 0.012 0.012 0.012 0.013 0.013 0.014 0.014 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.015 0.014 0.014 0.013 0.013 0.012 0.011 0.0099 0.0086 0.0072 0.0059 0.0048 0.0041 0.0038
Gini Mean Difference Ratio 0.057 0.060 0.062 0.064 0.066 0.067 0.068 0.069 0.070 0.070 0.070 0.071 0.071 0.070 0.070 0.070 0.070 0.069 0.069 0.068 0.068 0.067 0.067 0.065 0.064 0.061 0.057 0.052 0.048 0.042 0.060 0.060 0.061 0.062 0.063 0.064 0.065 0.065 0.066 0.066 0.066 0.066 0.066 0.066 0.066 0.066 0.065 0.065 0.064 0.063 0.062 0.062 0.060 0.057 0.054 0.048 0.042 0.037 0.033 0.035
Effective Number of Assets 8.200105310175214 8.591675649894958 8.914061803583557 9.200575932248872 9.669076363622692 10.042905188108048 10.296356964248307 10.407690290599575 10.368335377715717 10.182061194357152 9.864764715990296 9.43758398806516 8.936428254316073 8.399360341488464 7.843069929154527 7.305664213686036 6.788185892520897 6.322661810340446 5.894001701422519 5.474123745524875 5.083026522037701 4.687782011560027 4.40239485319279 4.022087577333468 3.6008387080754516 3.202081924170507 2.5798056188194143 2.020193584925389 1.5152184941723748 1.0000001319361242 8.200105310175214 8.591675649894958 8.914061803583557 9.200575932248872 9.669076363622692 10.042905188108048 10.296356964248307 10.407690290599575 10.368335377715717 10.182061194357152 9.864764715990296 9.43758398806516 8.936428254316073 8.399360341488464 7.843069929154527 7.305664213686036 6.788185892520897 6.322661810340446 5.894001701422519 5.474123745524875 5.083026522037701 4.687782011560027 4.40239485319279 4.022087577333468 3.6008387080754516 3.202081924170507 2.5798056188194143 2.020193584925389 1.5152184941723748 1.0000001319361242
Assets Number 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20


Instead of providing efficient_frontier_size=30, you can also provide an array of lower bounds for the expected returns using min_return. In the below example, we find the 5 portfolios that minimize the variance under a minimum return constraint of 15%, 20%, 25%, 30% and 35% (annualized):

model = MeanRisk(
    risk_measure=RiskMeasure.VARIANCE,
    min_return=np.array([0.15, 0.20, 0.25, 0.30, 0.35]) / 252,
    portfolio_params=dict(name="Variance"),
)

population = model.fit_predict(X_train)

population.plot_measures(
    x=RiskMeasure.ANNUALIZED_VARIANCE,
    y=PerfMeasure.ANNUALIZED_MEAN,
    color_scale=RatioMeasure.ANNUALIZED_SHARPE_RATIO,
    hover_measures=[RiskMeasure.MAX_DRAWDOWN, RatioMeasure.ANNUALIZED_SORTINO_RATIO],
)


Total running time of the script: (0 minutes 1.014 seconds)

Gallery generated by Sphinx-Gallery