def remove_one_item(self, recommendations, asset_type, allSecurities): stocks_alloc, bonds_alloc = self.current_allocation(allSecurities) if (asset_type == 'Equity' or asset_type == 'equity' or asset_type == 'stock'): if stocks_alloc == 0: print("You have no stocks to delete") else: pop = recom.reverse_recommend_stock(recommendations) security = next(pop) while not self.check_security_in_portfolio( self.portfolio, security): security = next(pop) self.deleteSecurity(security, allSecurities) print("You now have {} % exposure in CASH.".format( self.extra_exposure)) elif (asset_type == 'Bond' or asset_type == 'bond'): if bonds_alloc == 0: print("You have no bonds to delete") else: recommendations = recom.rank_etfs() pop = recom.reverse_recommend_stock(recommendations) security = next(pop) while not self.check_security_in_portfolio( self.portfolio, security): security = next(pop) self.deleteSecurity(security, allSecurities) print("You now have {} % exposure in CASH.".format( self.extra_exposure))
def cutExposureOnCriterion(self, new_exposure, region, all_preferences, allSecurities, criterion='Sector'): region_dict = self.extract_securities_by_criterion( region, allSecurities, criterion) current_exposure = sum(region_dict.values()) diff = current_exposure - new_exposure while (diff > 0): pop = recom.reverse_recommend_stock(all_preferences) security = next(pop) while (not self.security_exists_in_portfolio( region_dict, security)): security = next(pop) if (diff >= region_dict[security]): diff = diff - region_dict[security] self.deleteSecurity(security, allSecurities) region_dict.pop(security, None) else: self.setExposure(security, region_dict[security] - diff) region_dict[security] = region_dict[security] - diff diff = 0 return True
def removeStocksToBalance(self, security_dict, stocks_alloc, recommended_stock_alloc, recommendations, exposure=True): pop = recom.reverse_recommend_stock(recommendations) while (stocks_alloc > recommended_stock_alloc): security = next(pop) while (not self.check_security_in_portfolio( self.portfolio, security)): security = next(pop) security_exposure = self.portfolio[security] if (exposure): fit_exposure = min(security_exposure, stocks_alloc - recommended_stock_alloc) else: fit_exposure = stocks_alloc - recommended_stock_alloc if (fit_exposure >= security_exposure): # delete dictionary entry self.deleteSecurity(security, security_dict) stocks_alloc -= security_exposure elif (fit_exposure < security_exposure): # delete some of the shares self.setExposure(security, security_exposure - fit_exposure) stocks_alloc -= fit_exposure
def removeStocksToBalance(security_dict, stocks_alloc, recommended_stock_alloc, recommendations, exposure=True): recommendations = recom.rank_stocks('Mid') pop = recom.reverse_recommend_stock(recommendations) while (stocks_alloc > recommended_stock_alloc): security = next(pop) while (not client_portfolio.check_security_in_portfolio( client_portfolio.portfolio, security)): security = next(pop) security_exposure = client_portfolio.portfolio[security] if (exposure): fit_exposure = min(security_exposure, stocks_alloc - recommended_stock_alloc) else: fit_exposure = stocks_alloc - recommended_stock_alloc if (fit_exposure == security_exposure): # delete dictionary entry client_portfolio.deteleSecurity(security) stocks_alloc -= fit_exposure elif (fit_exposure < security_exposure): # delete some of the shares client_portfolio.setExposure(security, fit_exposure) stocks_alloc -= fit_exposure
def removeStocksToBalance(self, security_dict, stocks_alloc, recommended_stock_alloc): recommendations = recom.rank_stocks('Mid') pop = recom.reverse_recommend_stock(recommendations) while (stocks_alloc > recommended_stock_alloc): security = next(pop) while (not ut.check_security_in_portfolio(self.portfolio, security)): security = next(pop) security_exposure = self.portfolio[security] * security_dict[ security]['Price'] / self.client['Capital'] * 100 fit_exposure = min(security_exposure, stocks_alloc - recommended_stock_alloc) if (fit_exposure == security_exposure): # delete dictionary entry self.deteleSecurity(security) stocks_alloc -= fit_exposure elif (fit_exposure < security_exposure): # delete some of the shares shares_to_delete = fit_exposure / 100 * self.client[ 'Capital'] / security_dict[security]['Price'] self.deleteSharesFromSecurity(shares_to_delete, security) stocks_alloc -= fit_exposure