|  |  | @ -258,14 +258,9 @@ export class PortfolioService { | 
			
		
	
		
			
				
					|  |  |  |   ): Promise<PortfolioPositionDetail> { | 
			
		
	
		
			
				
					|  |  |  |     const userId = await this.getUserId(aImpersonationId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const portfolioCalculator = new PortfolioCalculator( | 
			
		
	
		
			
				
					|  |  |  |       this.currentRateService, | 
			
		
	
		
			
				
					|  |  |  |       this.request.user.Settings.currency | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const { transactionPoints } = await this.getTransactionPoints(userId); | 
			
		
	
		
			
				
					|  |  |  |     const orders = await this.getOrders(userId); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     if (transactionPoints?.length <= 0) { | 
			
		
	
		
			
				
					|  |  |  |     if (orders.length <= 0) { | 
			
		
	
		
			
				
					|  |  |  |       return { | 
			
		
	
		
			
				
					|  |  |  |         averagePrice: undefined, | 
			
		
	
		
			
				
					|  |  |  |         currency: undefined, | 
			
		
	
	
		
			
				
					|  |  | @ -283,7 +278,24 @@ export class PortfolioService { | 
			
		
	
		
			
				
					|  |  |  |       }; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     portfolioCalculator.setTransactionPoints(transactionPoints); | 
			
		
	
		
			
				
					|  |  |  |     const positionCurrency = orders[0].currency; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const portfolioOrders: PortfolioOrder[] = orders.map((order) => ({ | 
			
		
	
		
			
				
					|  |  |  |       currency: order.currency, | 
			
		
	
		
			
				
					|  |  |  |       date: format(order.date, DATE_FORMAT), | 
			
		
	
		
			
				
					|  |  |  |       name: order.SymbolProfile?.name, | 
			
		
	
		
			
				
					|  |  |  |       quantity: new Big(order.quantity), | 
			
		
	
		
			
				
					|  |  |  |       symbol: order.symbol, | 
			
		
	
		
			
				
					|  |  |  |       type: <OrderType>order.type, | 
			
		
	
		
			
				
					|  |  |  |       unitPrice: new Big(order.unitPrice) | 
			
		
	
		
			
				
					|  |  |  |     })); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const portfolioCalculator = new PortfolioCalculator( | 
			
		
	
		
			
				
					|  |  |  |       this.currentRateService, | 
			
		
	
		
			
				
					|  |  |  |       positionCurrency | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |     portfolioCalculator.computeTransactionPoints(portfolioOrders); | 
			
		
	
		
			
				
					|  |  |  |     const transactionPoints = portfolioCalculator.getTransactionPoints(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const portfolioStart = parseDate(transactionPoints[0].date); | 
			
		
	
		
			
				
					|  |  |  |     const currentPositions = await portfolioCalculator.getCurrentPositions( | 
			
		
	
	
		
			
				
					|  |  | @ -299,16 +311,22 @@ export class PortfolioService { | 
			
		
	
		
			
				
					|  |  |  |         averagePrice, | 
			
		
	
		
			
				
					|  |  |  |         currency, | 
			
		
	
		
			
				
					|  |  |  |         firstBuyDate, | 
			
		
	
		
			
				
					|  |  |  |         investment, | 
			
		
	
		
			
				
					|  |  |  |         marketPrice, | 
			
		
	
		
			
				
					|  |  |  |         quantity, | 
			
		
	
		
			
				
					|  |  |  |         transactionCount | 
			
		
	
		
			
				
					|  |  |  |       } = position; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       // Convert market price back to currency of position
 | 
			
		
	
		
			
				
					|  |  |  |       const marketPrice = this.exchangeRateDataService.toCurrency( | 
			
		
	
		
			
				
					|  |  |  |         position.marketPrice, | 
			
		
	
		
			
				
					|  |  |  |         this.request.user.Settings.currency, | 
			
		
	
		
			
				
					|  |  |  |         currency | 
			
		
	
		
			
				
					|  |  |  |       // Convert investment and gross performance to currency of user
 | 
			
		
	
		
			
				
					|  |  |  |       const userCurrency = this.request.user.Settings.currency; | 
			
		
	
		
			
				
					|  |  |  |       const investment = this.exchangeRateDataService.toCurrency( | 
			
		
	
		
			
				
					|  |  |  |         position.investment.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         currency, | 
			
		
	
		
			
				
					|  |  |  |         userCurrency | 
			
		
	
		
			
				
					|  |  |  |       ); | 
			
		
	
		
			
				
					|  |  |  |       const grossPerformance = this.exchangeRateDataService.toCurrency( | 
			
		
	
		
			
				
					|  |  |  |         position.grossPerformance.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         currency, | 
			
		
	
		
			
				
					|  |  |  |         userCurrency | 
			
		
	
		
			
				
					|  |  |  |       ); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       const historicalData = await this.dataProviderService.getHistorical( | 
			
		
	
	
		
			
				
					|  |  | @ -357,15 +375,15 @@ export class PortfolioService { | 
			
		
	
		
			
				
					|  |  |  |       return { | 
			
		
	
		
			
				
					|  |  |  |         currency, | 
			
		
	
		
			
				
					|  |  |  |         firstBuyDate, | 
			
		
	
		
			
				
					|  |  |  |         grossPerformance, | 
			
		
	
		
			
				
					|  |  |  |         investment, | 
			
		
	
		
			
				
					|  |  |  |         marketPrice, | 
			
		
	
		
			
				
					|  |  |  |         maxPrice, | 
			
		
	
		
			
				
					|  |  |  |         minPrice, | 
			
		
	
		
			
				
					|  |  |  |         transactionCount, | 
			
		
	
		
			
				
					|  |  |  |         averagePrice: averagePrice.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         grossPerformance: position.grossPerformance.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         grossPerformancePercent: position.grossPerformancePercentage.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         historicalData: historicalDataArray, | 
			
		
	
		
			
				
					|  |  |  |         investment: investment.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         quantity: quantity.toNumber(), | 
			
		
	
		
			
				
					|  |  |  |         symbol: aSymbol | 
			
		
	
		
			
				
					|  |  |  |       }; | 
			
		
	
	
		
			
				
					|  |  | 
 |