|  |  | @ -142,7 +142,7 @@ export class PortfolioCalculator { | 
			
		
	
		
			
				
					|  |  |  |     const start = dparse(startDate); | 
			
		
	
		
			
				
					|  |  |  |     const end = dparse(endDate); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     const timelinePeriod: TimelinePeriod[] = []; | 
			
		
	
		
			
				
					|  |  |  |     const timelinePeriodPromises: Promise<TimelinePeriod>[] = []; | 
			
		
	
		
			
				
					|  |  |  |     let i = 0; | 
			
		
	
		
			
				
					|  |  |  |     let j = -1; | 
			
		
	
		
			
				
					|  |  |  |     for ( | 
			
		
	
	
		
			
				
					|  |  | @ -162,38 +162,45 @@ export class PortfolioCalculator { | 
			
		
	
		
			
				
					|  |  |  |       ) { | 
			
		
	
		
			
				
					|  |  |  |         j++; | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |       timelinePeriodPromises.push(this.getTimePeriodForDate(j, currentDate)); | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       let investment: Big = new Big(0); | 
			
		
	
		
			
				
					|  |  |  |       const promises = []; | 
			
		
	
		
			
				
					|  |  |  |       if (j >= 0) { | 
			
		
	
		
			
				
					|  |  |  |         for (const item of this.transactionPoints[j].items) { | 
			
		
	
		
			
				
					|  |  |  |           investment = investment.add(item.investment); | 
			
		
	
		
			
				
					|  |  |  |           promises.push( | 
			
		
	
		
			
				
					|  |  |  |             this.currentRateService | 
			
		
	
		
			
				
					|  |  |  |               .getValue({ | 
			
		
	
		
			
				
					|  |  |  |                 date: currentDate, | 
			
		
	
		
			
				
					|  |  |  |                 symbol: item.symbol, | 
			
		
	
		
			
				
					|  |  |  |                 currency: item.currency, | 
			
		
	
		
			
				
					|  |  |  |                 userCurrency: this.currency | 
			
		
	
		
			
				
					|  |  |  |               }) | 
			
		
	
		
			
				
					|  |  |  |               .then((v) => new Big(v).mul(item.quantity)) | 
			
		
	
		
			
				
					|  |  |  |           ); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |     const timelinePeriod: TimelinePeriod[] = await Promise.all( | 
			
		
	
		
			
				
					|  |  |  |       timelinePeriodPromises | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |       const value = (await Promise.all(promises)).reduce( | 
			
		
	
		
			
				
					|  |  |  |         (a, b) => a.add(b), | 
			
		
	
		
			
				
					|  |  |  |         new Big(0) | 
			
		
	
		
			
				
					|  |  |  |       ); | 
			
		
	
		
			
				
					|  |  |  |       timelinePeriod.push({ | 
			
		
	
		
			
				
					|  |  |  |         date: format(currentDate, DATE_FORMAT), | 
			
		
	
		
			
				
					|  |  |  |         grossPerformance: value.minus(investment), | 
			
		
	
		
			
				
					|  |  |  |         investment, | 
			
		
	
		
			
				
					|  |  |  |         value | 
			
		
	
		
			
				
					|  |  |  |       }); | 
			
		
	
		
			
				
					|  |  |  |     return timelinePeriod; | 
			
		
	
		
			
				
					|  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   private async getTimePeriodForDate(j: number, currentDate: Date) { | 
			
		
	
		
			
				
					|  |  |  |     let investment: Big = new Big(0); | 
			
		
	
		
			
				
					|  |  |  |     const promises = []; | 
			
		
	
		
			
				
					|  |  |  |     if (j >= 0) { | 
			
		
	
		
			
				
					|  |  |  |       for (const item of this.transactionPoints[j].items) { | 
			
		
	
		
			
				
					|  |  |  |         investment = investment.add(item.investment); | 
			
		
	
		
			
				
					|  |  |  |         promises.push( | 
			
		
	
		
			
				
					|  |  |  |           this.currentRateService | 
			
		
	
		
			
				
					|  |  |  |             .getValue({ | 
			
		
	
		
			
				
					|  |  |  |               date: currentDate, | 
			
		
	
		
			
				
					|  |  |  |               symbol: item.symbol, | 
			
		
	
		
			
				
					|  |  |  |               currency: item.currency, | 
			
		
	
		
			
				
					|  |  |  |               userCurrency: this.currency | 
			
		
	
		
			
				
					|  |  |  |             }) | 
			
		
	
		
			
				
					|  |  |  |             .then((v) => new Big(v).mul(item.quantity)) | 
			
		
	
		
			
				
					|  |  |  |         ); | 
			
		
	
		
			
				
					|  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     return timelinePeriod; | 
			
		
	
		
			
				
					|  |  |  |     const value = (await Promise.all(promises)).reduce( | 
			
		
	
		
			
				
					|  |  |  |       (a, b) => a.add(b), | 
			
		
	
		
			
				
					|  |  |  |       new Big(0) | 
			
		
	
		
			
				
					|  |  |  |     ); | 
			
		
	
		
			
				
					|  |  |  |     return { | 
			
		
	
		
			
				
					|  |  |  |       date: format(currentDate, DATE_FORMAT), | 
			
		
	
		
			
				
					|  |  |  |       grossPerformance: value.minus(investment), | 
			
		
	
		
			
				
					|  |  |  |       investment, | 
			
		
	
		
			
				
					|  |  |  |       value | 
			
		
	
		
			
				
					|  |  |  |     }; | 
			
		
	
		
			
				
					|  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |   private getFactor(type: OrderType) { | 
			
		
	
	
		
			
				
					|  |  | 
 |