ef
- Model
- Chart
Get Efficient Frontier
Source Code: [link]
openbb.portfolio.po.ef(portfolio_engine: Optional[portfolio_optimization.po_engine.PoEngine] = 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 |
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 |
value_short | float | Amount to allocate to portfolio in short positions, by default 0.0 | None | True |
risk_measure | str | The risk measure used to optimize the portfolio, by default 'MV' Possible values are: - 'MV': Standard Deviation. - 'MAD': Mean Absolute Deviation. - 'MSV': Semi Standard Deviation. - 'FLPM': First Lower Partial Moment (Omega Ratio). - 'SLPM': Second Lower Partial Moment (Sortino Ratio). - 'CVaR': Conditional Value at Risk. - 'EVaR': Entropic Value at Risk. - 'WR': Worst Realization. - 'ADD': Average Drawdown of uncompounded cumulative returns. - 'UCI': Ulcer Index of uncompounded cumulative returns. - 'CDaR': Conditional Drawdown at Risk of uncompounded cumulative returns. - 'EDaR': Entropic Drawdown at Risk of uncompounded cumulative returns. - 'MDD': Maximum Drawdown of uncompounded 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 |
alpha | float | Significance level of VaR, CVaR, EDaR, DaR, CDaR, EDaR, Tail Gini of losses, by default 0.05 | None | True |
n_portfolios | int | Number of portfolios to simulate, by default 100 | None | True |
seed | int | Seed used to generate random portfolios, by default 123 | None | True |
Returns
Type | Description |
---|---|
Tuple[ | pd.DataFrame, pd.DataFrame, pd.DataFrame, pd.DataFrame, Optional[pd.DataFrame], NDArray[floating], NDArray[floating], rp.Portfolio, |
Examples
from openbb_terminal.sdk import openbb
d = {
"SECTOR": {
"AAPL": "INFORMATION TECHNOLOGY",
"MSFT": "INFORMATION TECHNOLOGY",
"AMZN": "CONSUMER DISCRETIONARY",
},
"CURRENCY": {
"AAPL": "USD",
"MSFT": "USD",
"AMZN": "USD",
},
"CURRENT_INVESTED_AMOUNT": {
"AAPL": "100000.0",
"MSFT": "200000.0",
"AMZN": "300000.0",
},
}
p = openbb.portfolio.po.load(symbols_categories=d)
weights, performance = openbb.portfolio.po.ef(portfolio_engine=p)
from openbb_terminal.sdk import openbb
p = openbb.portfolio.po.load(symbols_file_path="~/openbb_terminal/miscellaneous/portfolio_examples/allocation/60_40_Portfolio.xlsx")
frontier = openbb.portfolio.po.ef(portfolio_engine=p)
Display efficient frontier
Source Code: [link]
openbb.portfolio.po.ef_chart(portfolio_engine: Optional[portfolio_optimization.po_engine.PoEngine] = 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 |
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 |
value_short | float | Amount to allocate to portfolio in short positions, by default 0.0 | None | True |
risk_measure | str | The risk measure used to optimize the portfolio, by default 'MV' Possible values are: - 'MV': Standard Deviation. - 'MAD': Mean Absolute Deviation. - 'MSV': Semi Standard Deviation. - 'FLPM': First Lower Partial Moment (Omega Ratio). - 'SLPM': Second Lower Partial Moment (Sortino Ratio). - 'CVaR': Conditional Value at Risk. - 'EVaR': Entropic Value at Risk. - 'WR': Worst Realization. - 'ADD': Average Drawdown of uncompounded cumulative returns. - 'UCI': Ulcer Index of uncompounded cumulative returns. - 'CDaR': Conditional Drawdown at Risk of uncompounded cumulative returns. - 'EDaR': Entropic Drawdown at Risk of uncompounded cumulative returns. - 'MDD': Maximum Drawdown of uncompounded 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 |
alpha | float | Significance level of VaR, CVaR, EDaR, DaR, CDaR, EDaR, Tail Gini of losses, by default 0.05 | None | True |
n_portfolios | int | Number of portfolios to simulate, by default 100 | None | True |
seed | int | Seed used to generate random portfolios, by default 123 | None | True |
Returns
This function does not return anything
Examples
from openbb_terminal.sdk import openbb
d = {
"SECTOR": {
"AAPL": "INFORMATION TECHNOLOGY",
"MSFT": "INFORMATION TECHNOLOGY",
"AMZN": "CONSUMER DISCRETIONARY",
},
"CURRENT_INVESTED_AMOUNT": {
"AAPL": "100000.0",
"MSFT": "200000.0",
"AMZN": "300000.0",
},
"CURRENCY": {
"AAPL": "USD",
"MSFT": "USD",
"AMZN": "USD",
},
}
p = openbb.portfolio.po.load(symbols_categories=d)
openbb.portfolio.po.ef_chart(portfolio_engine=p)
from openbb_terminal.sdk import openbb
p = openbb.portfolio.po.load(symbols_file_path="openbb_terminal/miscellaneous/portfolio_examples/allocation/60_40_Portfolio.xlsx")
openbb.portfolio.po.ef_chart(portfolio_engine=p)