|  | @ -79,7 +79,9 @@ export class Portfolio implements PortfolioInterface { | 
			
		
	
		
		
			
				
					|  |  |         investmentInOriginalCurrency: |  |  |         investmentInOriginalCurrency: | 
			
		
	
		
		
			
				
					|  |  |           portfolioItemsYesterday?.positions[symbol] |  |  |           portfolioItemsYesterday?.positions[symbol] | 
			
		
	
		
		
			
				
					|  |  |             ?.investmentInOriginalCurrency, |  |  |             ?.investmentInOriginalCurrency, | 
			
		
	
		
		
			
				
					
					|  |  |         marketPrice: currentData[symbol]?.marketPrice, |  |  |         marketPrice: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |           currentData[symbol]?.marketPrice ?? | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           portfolioItemsYesterday.positions[symbol]?.marketPrice, | 
			
		
	
		
		
			
				
					|  |  |         quantity: portfolioItemsYesterday?.positions[symbol]?.quantity |  |  |         quantity: portfolioItemsYesterday?.positions[symbol]?.quantity | 
			
		
	
		
		
			
				
					|  |  |       }; |  |  |       }; | 
			
		
	
		
		
			
				
					|  |  |     }); |  |  |     }); | 
			
		
	
	
		
		
			
				
					|  | @ -158,53 +160,6 @@ export class Portfolio implements PortfolioInterface { | 
			
		
	
		
		
			
				
					|  |  |     return this; |  |  |     return this; | 
			
		
	
		
		
			
				
					|  |  |   } |  |  |   } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |   private convertDateRangeToDate(aDateRange: DateRange, aMinDate: Date) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     let currentDate = new Date(); |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     const normalizedMinDate = |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       getDate(aMinDate) === 1 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         ? aMinDate |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         : add(setDate(aMinDate, 1), { months: 1 }); |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     const year = getYear(currentDate); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     const month = getMonth(currentDate); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     const day = getDate(currentDate); |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     currentDate = new Date(Date.UTC(year, month, day, 0)); |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     switch (aDateRange) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       case '1d': |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         return sub(currentDate, { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           days: 1 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         }); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       case 'ytd': |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = setDate(currentDate, 1); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = setMonth(currentDate, 0); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         return isAfter(currentDate, normalizedMinDate) |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           ? currentDate |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           : undefined; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       case '1y': |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = setDate(currentDate, 1); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = sub(currentDate, { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           years: 1 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         }); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         return isAfter(currentDate, normalizedMinDate) |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           ? currentDate |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           : undefined; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       case '5y': |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = setDate(currentDate, 1); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         currentDate = sub(currentDate, { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           years: 5 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         }); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         return isAfter(currentDate, normalizedMinDate) |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           ? currentDate |  |  |  | 
			
		
	
		
		
			
				
					|  |  |           : undefined; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       default: |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         // Gets handled as all data
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |         return undefined; |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |  | 
			
		
	
		
		
			
				
					|  |  |   } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |   public get(aDate?: Date): PortfolioItem[] { |  |  |   public get(aDate?: Date): PortfolioItem[] { | 
			
		
	
		
		
			
				
					|  |  |     if (aDate) { |  |  |     if (aDate) { | 
			
		
	
		
		
			
				
					|  |  |       const filteredPortfolio = this.portfolioItems.find((item) => { |  |  |       const filteredPortfolio = this.portfolioItems.find((item) => { | 
			
		
	
	
		
		
			
				
					|  | @ -528,12 +483,6 @@ export class Portfolio implements PortfolioInterface { | 
			
		
	
		
		
			
				
					|  |  |     return this.orders; |  |  |     return this.orders; | 
			
		
	
		
		
			
				
					|  |  |   } |  |  |   } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |   private getOrdersByType(aFilter: string[]) { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     return this.orders.filter((order) => { |  |  |  | 
			
		
	
		
		
			
				
					|  |  |       return aFilter.includes(order.getType()); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |     }); |  |  |  | 
			
		
	
		
		
			
				
					|  |  |   } |  |  |  | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  |  | 
			
		
	
		
		
			
				
					|  |  |   public getValue(aDate = getToday()) { |  |  |   public getValue(aDate = getToday()) { | 
			
		
	
		
		
			
				
					|  |  |     const positions = this.getPositions(aDate); |  |  |     const positions = this.getPositions(aDate); | 
			
		
	
		
		
			
				
					|  |  |     let value = 0; |  |  |     let value = 0; | 
			
		
	
	
		
		
			
				
					|  | @ -692,6 +641,53 @@ export class Portfolio implements PortfolioInterface { | 
			
		
	
		
		
			
				
					|  |  |     this.updatePortfolioItems(); |  |  |     this.updatePortfolioItems(); | 
			
		
	
		
		
			
				
					|  |  |   } |  |  |   } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |   private convertDateRangeToDate(aDateRange: DateRange, aMinDate: Date) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     let currentDate = new Date(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     const normalizedMinDate = | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       getDate(aMinDate) === 1 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         ? aMinDate | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         : add(setDate(aMinDate, 1), { months: 1 }); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     const year = getYear(currentDate); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     const month = getMonth(currentDate); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     const day = getDate(currentDate); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     currentDate = new Date(Date.UTC(year, month, day, 0)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     switch (aDateRange) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       case '1d': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return sub(currentDate, { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           days: 1 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         }); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       case 'ytd': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = setDate(currentDate, 1); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = setMonth(currentDate, 0); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return isAfter(currentDate, normalizedMinDate) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           ? currentDate | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           : undefined; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       case '1y': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = setDate(currentDate, 1); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = sub(currentDate, { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           years: 1 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         }); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return isAfter(currentDate, normalizedMinDate) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           ? currentDate | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           : undefined; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       case '5y': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = setDate(currentDate, 1); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         currentDate = sub(currentDate, { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           years: 5 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         }); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return isAfter(currentDate, normalizedMinDate) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           ? currentDate | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           : undefined; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |       default: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         // Gets handled as all data
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return undefined; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |   } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |   private updatePortfolioItems() { |  |  |   private updatePortfolioItems() { | 
			
		
	
		
		
			
				
					|  |  |     // console.time('update-portfolio-items');
 |  |  |     // console.time('update-portfolio-items');
 | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | 
 |