From 0ad8c9549b4dd2cdd7e794945c04473d2f8fb33f Mon Sep 17 00:00:00 2001 From: Jalil F Date: Tue, 30 Aug 2022 09:38:49 -0400 Subject: [PATCH] Fix index error for portfolio historical trades. fixes #2450 (#2451) Co-authored-by: Jeroen Bouma Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> --- openbb_terminal/portfolio/portfolio_model.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openbb_terminal/portfolio/portfolio_model.py b/openbb_terminal/portfolio/portfolio_model.py index 22f28057d09..ce74fe97530 100644 --- a/openbb_terminal/portfolio/portfolio_model.py +++ b/openbb_terminal/portfolio/portfolio_model.py @@ -1165,14 +1165,19 @@ class PortfolioModel: # Set current price of benchmark self.benchmark_trades["Last price"] = self.benchmark_historical_prices[-1] self.benchmark_trades[["Benchmark Quantity", "Trade price"]] = float(0) - # Iterate over orderbook to replicate trades on benchmark for index, trade in self.__orderbook.iterrows(): # Select date to search (if not in historical prices, get closest value) if trade["Date"] not in self.benchmark_historical_prices.index: - date = self.benchmark_historical_prices.index.searchsorted( + found_date = self.benchmark_historical_prices.index.searchsorted( trade["Date"] ) + # Fix error if trade was today and there are no historical price data rows + if self.benchmark_historical_prices.index.isin([found_date]).any(): + date = found_date + else: + # If no historical price data, use last row + date = self.benchmark_historical_prices.index[-1] else: date = trade["Date"]