Skip to main content


Builds a nested clustered optimization portfolio


nco [-cd {pearson,spearman,abs_pearson,abs_spearman,distance,mutual_info,tail}] [-cv {hist,ewma1,ewma2,ledoit,oas,shrunk,gl,jlogo,fixed,spectral,shrink}] [-o {MinRisk,Utility,Sharpe,ERC}] [-ra RISK_AVERSION] [-lk LINKAGE] [-k AMOUNT_CLUSTERS] [-mk MAX_CLUSTERS] [-bi {KN,FD,SC,HGR}] [-at ALPHA_TAIL] [-lo] [-de SMOOTHING_FACTOR_EWMA] [-rm {MV,MAD,MSV,FLPM,SLPM,CVaR,EVaR,WR,ADD,UCI,CDaR,EDaR,MDD}] [-mt METHOD] [-ct CATEGORIES] [-p PERIOD] [-s START_PERIOD] [-e END_PERIOD] [-lr] [--freq {d,w,m}] [-mn MAX_NAN] [-th THRESHOLD_VALUE] [-r RISK_FREE] [-a SIGNIFICANCE_LEVEL] [-v LONG_ALLOCATION] [--name NAME]


co_dependence-cd --codependenceThe codependence or similarity matrix used to build the distance metric and clusters. Possible values are: 'pearson': pearson correlation matrix 'spearman': spearman correlation matrix 'abs_pearson': absolute value of pearson correlation matrix 'abs_spearman': absolute value of spearman correlation matrix 'distance': distance correlation matrix 'mutual_info': mutual information codependence matrix 'tail': tail index codependence matrixpearsonTruepearson, spearman, abs_pearson, abs_spearman, distance, mutual_info, tail
covariance-cv --covarianceMethod used to estimate covariance matrix. Possible values are 'hist': historical method 'ewma1': exponential weighted moving average with adjust=True 'ewma2': exponential weighted moving average with adjust=False 'ledoit': Ledoit and Wolf shrinkage method 'oas': oracle shrinkage method 'shrunk': scikit-learn shrunk method 'gl': graphical lasso method 'jlogo': j-logo covariance 'fixed': takes average of eigenvalues above max Marchenko Pastour limit 'spectral': makes zero eigenvalues above max Marchenko Pastour limit 'shrink': Lopez de Prado's book shrinkage methodhistTruehist, ewma1, ewma2, ledoit, oas, shrunk, gl, jlogo, fixed, spectral, shrink
objective-o --objectiveObjective function used to optimize the portfolioMinRiskTrueMinRisk, Utility, Sharpe, ERC
risk_aversion-ra --risk-aversionRisk aversion parameter1TrueNone
linkage-lk --linkageLinkage method of hierarchical clusteringsingleTruesingle, complete, average, weighted, centroid, median, ward, dbht
amount_clusters-kNumber of clusters specified in advanceNoneTrueNone
max_clusters-mk --max-kMax number of clusters used by the two difference gap statistic to find the optimal number of clusters. If k is empty this value is used10TrueNone
amount_bins-bi --bins-infoNumber of bins used to calculate the variation of informationKNTrueKN, FD, SC, HGR
alpha_tail-at --alpha-tailSignificance level for lower tail dependence index, only used when when codependence value is 'tail'0.05TrueNone
leaf_order-lo --leaf-orderindicates if the cluster are ordered so that the distance between successive leaves is minimalTrueTrueNone
smoothing_factor_ewma-de --d-ewmaSmoothing factor for ewma estimators0.94TrueNone
risk_measure-rm --risk-measureRisk measure used to optimize the portfolio. Possible values are: 'MV' : Variance 'MAD' : Mean Absolute Deviation 'MSV' : Semi Variance (Variance of negative returns) 'FLPM' : First Lower Partial Moment 'SLPM' : Second Lower Partial Moment 'CVaR' : Conditional Value at Risk 'EVaR' : Entropic Value at Risk 'WR' : Worst Realization 'ADD' : Average Drawdown of uncompounded returns 'UCI' : Ulcer Index of uncompounded returns 'CDaR' : Conditional Drawdown at Risk of uncompounded returns 'EDaR' : Entropic Drawdown at Risk of uncompounded returns 'MDD' : Maximum Drawdown of uncompounded returnsMVTrueMV, MAD, MSV, FLPM, SLPM, CVaR, EVaR, WR, ADD, UCI, CDaR, EDaR, MDD
nan_fill_method-mt --methodMethod used to fill nan values in time series, by default time. Possible values are: 'linear': linear interpolation 'time': linear interpolation based on time index 'nearest': use nearest value to replace nan values 'zero': spline of zeroth order 'slinear': spline of first order 'quadratic': spline of second order 'cubic': spline of third order 'barycentric': builds a polynomial that pass for all pointstimeTruelinear, time, nearest, zero, slinear, quadratic, cubic, barycentric
categories-ct --categoriesShow selected categoriesTrueNone
historic_period-p --periodPeriod to get yfinance data from. Possible frequency strings are: 'd': means days, for example '252d' means 252 days 'w': means weeks, for example '52w' means 52 weeks 'mo': means months, for example '12mo' means 12 months 'y': means years, for example '1y' means 1 year 'ytd': downloads data from beginning of year to today 'max': downloads all data available for each asset3yTrue1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 3y, 5y, 10y, ytd, max
start_period-s --startStart date to get yfinance data from. Must be in 'YYYY-MM-DD' formatTrueNone
end_period-e --endEnd date to get yfinance data from. Must be in 'YYYY-MM-DD' formatTrueNone
log_returns-lr --log-returnsIf use logarithmic or arithmetic returns to calculate returnsFalseTrueNone
return_frequency--freqFrequency used to calculate returns. Possible values are: 'd': for daily returns 'w': for weekly returns 'm': for monthly returnsdTrued, w, m
max_nan-mn --maxnanMax percentage of nan values accepted per asset to be considered in the optimization process0.05TrueNone
threshold_value-th --thresholdValue used to replace outliers that are higher to threshold in absolute value0.3TrueNone
risk_free-r --risk-free-rateRisk-free rate of borrowing/lending. The period of the risk-free rate must be annual0.05411TrueNone
significance_level-a --alphaSignificance level of CVaR, EVaR, CDaR and EDaR0.05TrueNone
long_allocation-v --valueAmount to allocate to portfolio1TrueNone
name--nameSave portfolio with personalized or default nameNCO_0TrueNone


2022 Apr 05, 14:34 (๐Ÿฆ‹) /portfolio/po/ $ nco

[3 Years] Nested clustered optimization using pearson codependence,
single linkage and volatility as risk measure

โ”ƒ โ”ƒ Value โ”ƒ
โ”‚ AAPL โ”‚ 7.17 % โ”‚
โ”‚ AMZN โ”‚ 19.33 % โ”‚
โ”‚ BA โ”‚ 0.0 % โ”‚
โ”‚ FB โ”‚ 0.53 % โ”‚
โ”‚ MSFT โ”‚ 16.81 % โ”‚
โ”‚ T โ”‚ 56.14 % โ”‚
โ”‚ TSLA โ”‚ 0.0 % โ”‚

Annual (by 252) expected return: 15.58%
Annual (by โˆš252) volatility: 22.42%
Sharpe ratio: 0.6868