Skip to main content

blacklitterman

Optimize decorrelation weights

Source Code: [link]

openbb.portfolio.po.blacklitterman(portfolio_engine: portfolio_optimization.po_engine.PoEngine = None, symbols: List[str] = None, kwargs: Any)

Parameters

NameTypeDescriptionDefaultOptional
portfolio_enginePoEnginePortfolio optimization engine, by default None
Use portfolio.po.load to load a portfolio engine
NoneTrue
symbolsList[str]List of symbols, by default NoneNoneTrue
intervalstrInterval to get data, by default '3y'NoneTrue
start_datestrIf not using interval, start date string (YYYY-MM-DD), by default ""NoneTrue
end_datestrIf not using interval, end date string (YYYY-MM-DD). If empty use last weekday, by default ""NoneTrue
log_returnsboolIf True use log returns, else arithmetic returns, by default FalseNoneTrue
freqstrFrequency of returns, by default 'D'. Options: 'D' for daily, 'W' for weekly, 'M' for monthlyNoneTrue
maxnanfloatMaximum percentage of NaNs allowed in the data, by default 0.05NoneTrue
thresholdfloatValue used to replace outliers that are higher than threshold, by default 0.0NoneTrue
methodstrMethod used to fill nan values, by default 'time'
For more information see interpolate <https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html>__.
NoneTrue
valuefloatAmount to allocate to portfolio in long positions, by default 1.0NoneTrue
value_shortfloatAmount to allocate to portfolio in short positions, by default 0.0NoneTrue
benchmarkDictDict of portfolio weights, by default NoneNoneTrue
p_viewsListMatrix P of views that shows relationships among assets and returns, by default NoneNoneTrue
q_viewsListMatrix Q of expected returns of views, by default NoneNoneTrue
objectivestrObjective function of the optimization model, by default 'Sharpe'
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.
NoneTrue
risk_free_ratefloatRisk free rate, annualized. Used for 'FLPM' and 'SLPM' and Sharpe objective function, by default 0.0NoneTrue
risk_aversionfloatRisk aversion factor of the 'Utility' objective function, by default 1.0NoneTrue
deltafloatRisk aversion factor of Black Litterman model, by default NoneNoneTrue
equilibriumboolIf True excess returns are based on equilibrium market portfolio, if False
excess returns are calculated as historical returns minus risk free rate, by default True
NoneTrue
optimizeboolIf True Black Litterman estimates are used as inputs of mean variance model,
if False returns equilibrium weights from Black Litterman model, by default True
NoneTrue

Returns

TypeDescription
Tuple[pd.DataFrame, Dict]Tuple with weights and performance dictionary

Examples

from openbb_terminal.sdk import openbb
openbb.portfolio.po.blacklitterman(symbols=["AAPL", "MSFT", "AMZN"])
(        value
AAPL 0.48920
MSFT 0.28391
AMZN 0.22689,
{'Return': 0.2563301105112327,
'Volatility': 0.33132073874339424,
'Sharpe ratio': 0.7736615325784322})
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.blacklitterman(portfolio_engine=p)