def test_init_portfolio_failing(): with pytest.raises( ValueError, match= r"Number of tickers \(2\) should be equal to the weights number \(3\)", ): ok.Portfolio(['RUB.FX', 'MCFTR.INDX'], weights=[0.1, 0.2, 0.7]) with pytest.raises(ValueError, match="Weights sum is not equal to one."): ok.Portfolio(['RUB.FX', 'MCFTR.INDX'], weights=[0.1, 0.2])
def _init_portfolio(request, _init_portfolio_values): request.cls.portfolio = ok.Portfolio(**_init_portfolio_values) _init_portfolio_values['inflation'] = False request.cls.portfolio_no_inflation = ok.Portfolio(**_init_portfolio_values) _init_portfolio_values['first_date'] = '2019-02' request.cls.portfolio_short_history = ok.Portfolio( **_init_portfolio_values)
def test_init_portfolio_failing(_init_portfolio_values): with pytest.raises( ValueError, match= r'Number of tickers \(2\) should be equal to the weights number \(3\)' ): _init_portfolio_values['weights'] = [0.1, 0.2, 0.7] ok.Portfolio(**_init_portfolio_values) with pytest.raises(ValueError, match='Weights sum is not equal to one.'): _init_portfolio_values['weights'] = [0.1, 0.2] ok.Portfolio(**_init_portfolio_values)
def plots(self): ##-- Page 3 self.ui.stackedWidget.setCurrentWidget(self.ui.page_3) if self.weights is None or len(self.all_tickers) == 0: return tickers = [ticker + '.US' for ticker in self.all_tickers] weights = [weight for weight in self.weights.values()] portfolio_okama = ok.Portfolio(tickers, weights=weights, ccy='USD', last_date=datetime.datetime.now(), first_date="2006-01") self.ui.browser_page_4 = QtWebEngineWidgets.QWebEngineView(self) self.ui.stackedWidget_2.addWidget(self.ui.browser_page_4) self.ui.btn_page_4.clicked.connect( lambda: self.plot_forecast(portfolio_okama)) self.ui.btn_page_5.clicked.connect(self.plot_assets) self.ui.btn_page_6.clicked.connect(self.plot_transition_map) self.ui.btn_page_4.clicked.connect(self.btn_page_4_visible) self.ui.btn_page_5.clicked.connect(self.btn_page_5_visible) self.ui.btn_page_6.clicked.connect(self.btn_page_6_visible) # self.plot_forecast(portfolio_okama) pass
def test_initialization_failing(): with pytest.raises( ValueError, match= r"Number of tickers \(2\) should be equal to the weights number \(3\)" ): ok.Portfolio(assets=['MCFTR.INDX', 'MCFTR.INDX', 'RUB.FX'], weights=[.3, .3, .4])
import okama as ok ln = ok.Portfolio(['EDV.US'], inflation=False) ln.plot_forecast(distr='lognorm', years=2)
def portfolio_short_history(init_portfolio_values): _portfolio_short_history = deepcopy(init_portfolio_values) _portfolio_short_history['first_date'] = '2019-02' return ok.Portfolio(**_portfolio_short_history)
def portfolio_no_inflation(init_portfolio_values): _portfolio_no_inflation = deepcopy(init_portfolio_values) _portfolio_no_inflation['inflation'] = False _portfolio_no_inflation['rebalancing_period'] = 'month' return ok.Portfolio(**_portfolio_no_inflation)
def portfolio_rebalanced_month(init_portfolio_values): _portfolio_rebalanced_month = deepcopy(init_portfolio_values) _portfolio_rebalanced_month['rebalancing_period'] = 'month' return ok.Portfolio(**_portfolio_rebalanced_month)
def portfolio_not_rebalanced(init_portfolio_values): _portfolio_not_rebalanced = deepcopy(init_portfolio_values) _portfolio_not_rebalanced['rebalancing_period'] = 'none' return ok.Portfolio(**_portfolio_not_rebalanced)
def portfolio_rebalanced_year(init_portfolio_values): return ok.Portfolio(**init_portfolio_values)
def portfolio_dividends(init_portfolio_values): _portfolio_dividends = deepcopy(init_portfolio_values) _portfolio_dividends['assets'] = ['SBER.MOEX', 'T.US', 'GNS.LSE'] return ok.Portfolio(**_portfolio_dividends)
import okama as ok x = ok.Portfolio(['LKOH.MOEX', 'T.US'], ccy='USD', rebalancing_period='none') y = ok.AssetList(['SPY.US', x]) print(y.assets_dividend_yield)
import okama as ok import pandas as pd x = ok.Portfolio(symbols=['RUB.FX', 'MCFTR.INDX'], ccy='RUB', first_date='2015-01', last_date='2020-01', inflation=True) print(x.describe()) print('\n\n*******************') print(pd.read_pickle('tests/data/portfolio_description.pkl'))