mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-03 07:51:49 +00:00
* add first iteration of content for Terminal Pro * Update index.md * Update dashboards.md * Update folders.md * Update grouping.md * Update report.md * Update templates.md * Update quick-start.md * Update index.md * Update index.md * Update home.md * Update news.md * Update index.md * Update index.md * Update index.md * Update data-provider.md * Update chat-with-widget.md * Update data-manipulation.md * Update forecasting.md * fix: images self closing tags * fix: only pro visitors can see pro * inter font * improve SEO content and restructuring * add new package for toggle on tutorials * move folder around * improve main page of each prod * small updates and improvements * fix logo above * small improvement in headtitle for portfolio funcs * fix typos from OpenAI's GPT-4 * fix _category_ json * remove generic SEO words * add script that generates SEO for documentation * add missing file * remove sdk warning message * fix links for andrew --------- Co-authored-by: jose-donato <zmcdonato@gmail.com> Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: andrewkenreich <andrew.kenreich@gmail.com>
9.7 KiB
Vendored
9.7 KiB
Vendored
title, description, keywords
| title | description | keywords | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| nco | This page is about the Non-Convex Optimization (NCO) model used for portfolio optimization. It includes a detailed explanation of the function parameters, return values, and examples of usage using the OpenBB financial software. |
|
import HeadTitle from '@site/src/components/General/HeadTitle.tsx';
Optimize with Non-Convex Optimization (NCO) model.
Source Code: [link]
openbb.portfolio.po.nco(portfolio_engine: portfolio_optimization.po_engine.PoEngine = None, symbols: List[str] = None, kwargs: Any)
Parameters
| Name | Type | Description | Default | Optional |
|---|---|---|---|---|
| portfolio_engine | PoEngine | Portfolio optimization engine, by default None Use portfolio.po.load to load a portfolio engine |
None | True |
| symbols | List[str] | List of symbols, by default None | None | True |
| interval | str | Interval to get data, by default '3y' | None | True |
| start_date | str | If not using interval, start date string (YYYY-MM-DD), by default "" | None | True |
| end_date | str | If not using interval, end date string (YYYY-MM-DD). If empty use last weekday, by default "" | None | True |
| log_returns | bool | If True use log returns, else arithmetic returns, by default False | None | True |
| freq | str | Frequency of returns, by default 'D'. Options: 'D' for daily, 'W' for weekly, 'M' for monthly | None | True |
| maxnan | float | Maximum percentage of NaNs allowed in the data, by default 0.05 | None | True |
| threshold | float | Value used to replace outliers that are higher than threshold, by default 0.0 | None | True |
| method | str | Method used to fill nan values, by default 'time' For more information see interpolate <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html>__. |
None | True |
| value | float | Amount to allocate to portfolio in long positions, by default 1.0 | None | True |
| objective | str | Objective function of the optimization model, by default 'MinRisk' Possible values are: - 'MinRisk': Minimize the selected risk measure. - 'Utility': Maximize the risk averse utility function. - 'Sharpe': Maximize the risk adjusted return ratio based on the selected risk measure. - 'MaxRet': Maximize the expected return of the portfolio. |
None | True |
| risk_measure | str | The risk measure used to optimize the portfolio, by default 'MV' If model is 'NCO', the risk measures available depends on the objective function. Possible values are: - 'MV': Variance. - 'MAD': Mean Absolute Deviation. - 'MSV': Semi Standard Deviation. - 'FLPM': First Lower Partial Moment (Omega Ratio). - 'SLPM': Second Lower Partial Moment (Sortino Ratio). - 'VaR': Value at Risk. - 'CVaR': Conditional Value at Risk. - 'TG': Tail Gini. - 'EVaR': Entropic Value at Risk. - 'WR': Worst Realization (Minimax). - 'RG': Range of returns. - 'CVRG': CVaR range of returns. - 'TGRG': Tail Gini range of returns. - 'MDD': Maximum Drawdown of uncompounded cumulative returns (Calmar Ratio). - 'ADD': Average Drawdown of uncompounded cumulative returns. - 'DaR': Drawdown at Risk of uncompounded cumulative returns. - 'CDaR': Conditional Drawdown at Risk of uncompounded cumulative returns. - 'EDaR': Entropic Drawdown at Risk of uncompounded cumulative returns. - 'UCI': Ulcer Index of uncompounded cumulative returns. - 'MDD_Rel': Maximum Drawdown of compounded cumulative returns (Calmar Ratio). - 'ADD_Rel': Average Drawdown of compounded cumulative returns. - 'DaR_Rel': Drawdown at Risk of compounded cumulative returns. - 'CDaR_Rel': Conditional Drawdown at Risk of compounded cumulative returns. - 'EDaR_Rel': Entropic Drawdown at Risk of compounded cumulative returns. - 'UCI_Rel': Ulcer Index of compounded cumulative returns. |
None | True |
| risk_free_rate | float | Risk free rate, annualized. Used for 'FLPM' and 'SLPM' and Sharpe objective function, by default 0.0 | None | True |
| risk_aversion | float | Risk aversion factor of the 'Utility' objective function, by default 1.0 | None | True |
| alpha | float | Significance level of VaR, CVaR, EDaR, DaR, CDaR, EDaR, Tail Gini of losses, by default 0.05 | None | True |
| a_sim | float | Number of CVaRs used to approximate Tail Gini of losses, by default 100 | None | True |
| beta | float | Significance level of CVaR and Tail Gini of gains. If None it duplicates alpha value, by default None | None | True |
| b_sim | float | Number of CVaRs used to approximate Tail Gini of gains. If None it duplicates a_sim value, by default None | None | True |
| covariance | str | The method used to estimate the covariance matrix, by default 'hist' Possible values are: - 'hist': use historical estimates. - 'ewma1': use ewma with adjust=True. For more information see EWM <https://pandas.pydata.org/pandas-docs/stable/user_guide/window.html#exponentially-weighted-window>.- 'ewma2': use ewma with adjust=False. For more information see EWM <https://pandas.pydata.org/pandas-docs/stable/user_guide/window.html#exponentially-weighted-window>.- 'ledoit': use the Ledoit and Wolf Shrinkage method. - 'oas': use the Oracle Approximation Shrinkage method. - 'shrunk': use the basic Shrunk Covariance method. - 'gl': use the basic Graphical Lasso Covariance method. - 'jlogo': use the j-LoGo Covariance method. For more information see: a-jLogo.- 'fixed': denoise using fixed method. For more information see chapter 2 of a-MLforAM.- 'spectral': denoise using spectral method. For more information see chapter 2 of a-MLforAM.- 'shrink': denoise using shrink method. For more information see chapter 2 of a-MLforAM. |
None | True |
| d_ewma | float | The smoothing factor of ewma methods, by default 0.94 | None | True |
| codependence | str | The codependence or similarity matrix used to build the distance metric and clusters. The default is 'pearson'. Possible values are: - 'pearson': pearson correlation matrix. Distance formula: .. math:: D_{i,j} = \sqrt{0.5(1-\rho^{pearson}{i,j})} - 'spearman': spearman correlation matrix. Distance formula: .. math:: D{i,j} = \sqrt{0.5(1-\rho^{spearman}{i,j})} - 'abs_pearson': absolute value pearson correlation matrix. Distance formula: .. math:: D{i,j} = \sqrt{(1- |
\rho^{pearson}_{i,j} | )} - 'abs_spearman': absolute value spearman correlation matrix. Distance formula: .. math:: D_{i,j} = \sqrt{(1- |
| linkage | str | Linkage method of hierarchical clustering. For more information see linkage <https://docs.scipy.org/doc/scipy/reference/generated/scipy.<br/>cluster.hierarchy.linkage.html?highlight=linkage#scipy.cluster.hierarchy.linkage>__.The default is 'single'. Possible values are: - 'single'. - 'complete'. - 'average'. - 'weighted'. - 'centroid'. - 'median'. - 'ward'. - 'dbht': Direct Bubble Hierarchical Tree. |
None | True |
| k | int | Number of clusters. This value is took instead of the optimal number of clusters calculated with the two difference gap statistic, by default None |
None | True |
| max_k | int | Max number of clusters used by the two difference gap statistic to find the optimal number of clusters, by default 10 |
None | True |
| bins_info | str | Number of bins used to calculate variation of information, by default 'KN'. Possible values are: - 'KN': Knuth's choice method. For more information see knuth_bin_width <https://docs.astropy.org/en/stable/api/astropy.stats.knuth_bin_width.html>.- 'FD': Freedman–Diaconis' choice method. For more information see freedman_bin_width <https://docs.astropy.org/en/stable/api/astropy.stats.freedman_bin_width.html>.- 'SC': Scotts' choice method. For more information see scott_bin_width <https://docs.astropy.org/en/stable/api/astropy.stats.scott_bin_width.html>__.- 'HGR': Hacine-Gharbi and Ravier' choice method. |
None | True |
| alpha_tail | float | Significance level for lower tail dependence index, by default 0.05 | None | True |
| leaf_order | bool | Indicates if the cluster are ordered so that the distance between successive leaves is minimal, by default True |
None | True |
Returns
| Type | Description |
|---|---|
| Tuple[pd.DataFrame, Dict] | Tuple with weights and performance dictionary |
Examples
from openbb_terminal.sdk import openbb
openbb.portfolio.po.nco(symbols=["AAPL", "MSFT", "AMZN"])
( value
AAPL 0.25044
MSFT 0.49509
AMZN 0.25447,
{'Return': 0.2248615963428331,
'Volatility': 0.32736590080425004,
'Sharpe ratio': 0.6868815468880802})
from openbb_terminal.sdk import openbb
p = openbb.portfolio.po.load(symbols_file_path="~/openbb_terminal/miscellaneous/portfolio_examples/allocation/60_40_Portfolio.xlsx")
weights, performance = openbb.portfolio.po.nco(portfolio_engine=p)