| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -337,8 +337,8 @@ export class PortfolioCalculatorNew { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let grossPerformanceFromSells = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let initialValue: Big; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let lastAveragePrice = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let lastValueOfInvestment = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let lastNetValueOfInvestment = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let lastTransactionInvestment = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let lastValueOfInvestmentBeforeTransaction = new Big(0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let timeWeightedGrossPerformancePercentage = new Big(1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let timeWeightedNetPerformancePercentage = new Big(1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    let totalInvestment = new Big(0); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -394,7 +394,13 @@ export class PortfolioCalculatorNew { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for (let i = 0; i < orders.length; i += 1) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const order = orders[i]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const transactionInvestment = order.quantity.mul(order.unitPrice); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const valueOfInvestmentBeforeTransaction = totalUnits.mul( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        order.unitPrice | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const transactionInvestment = order.quantity | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .mul(order.unitPrice) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .mul(this.getFactor(order.type)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        !initialValue && | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -411,7 +417,6 @@ export class PortfolioCalculatorNew { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const valueOfInvestment = totalUnits.mul(order.unitPrice); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const netValueOfInvestment = totalUnits.mul(order.unitPrice).sub(fees); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      const grossPerformanceFromSell = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        order.type === TypeOfOrder.SELL | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -423,7 +428,7 @@ export class PortfolioCalculatorNew { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      totalInvestment = totalInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .plus(transactionInvestment.mul(this.getFactor(order.type))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .plus(transactionInvestment) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        .plus(grossPerformanceFromSell); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      lastAveragePrice = totalUnits.eq(0) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -436,48 +441,52 @@ export class PortfolioCalculatorNew { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if ( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        i > indexOfStartOrder && | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        !lastValueOfInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .plus(transactionInvestment.mul(this.getFactor(order.type))) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        !lastValueOfInvestmentBeforeTransaction | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .plus(lastTransactionInvestment) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .eq(0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const grossHoldingPeriodReturn = valueOfInvestmentBeforeTransaction | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .sub( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastValueOfInvestmentBeforeTransaction.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              lastTransactionInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .div( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastValueOfInvestmentBeforeTransaction.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              lastTransactionInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        timeWeightedGrossPerformancePercentage = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          timeWeightedGrossPerformancePercentage.mul( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            new Big(1).plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              valueOfInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .minus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  lastValueOfInvestment.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    transactionInvestment.mul(this.getFactor(order.type)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .div( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  lastValueOfInvestment.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    transactionInvestment.mul(this.getFactor(order.type)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            new Big(1).plus(grossHoldingPeriodReturn) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        const netHoldingPeriodReturn = valueOfInvestmentBeforeTransaction | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .sub(fees.sub(order.fee)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .sub( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastValueOfInvestmentBeforeTransaction.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              lastTransactionInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          .div( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            lastValueOfInvestmentBeforeTransaction.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              lastTransactionInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        timeWeightedNetPerformancePercentage = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          timeWeightedNetPerformancePercentage.mul( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            new Big(1).plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					              netValueOfInvestment | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .minus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  lastNetValueOfInvestment.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    transactionInvestment.mul(this.getFactor(order.type)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                .div( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  lastNetValueOfInvestment.plus( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    transactionInvestment.mul(this.getFactor(order.type)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                  ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            new Big(1).plus(netHoldingPeriodReturn) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      grossPerformance = newGrossPerformance; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      lastNetValueOfInvestment = netValueOfInvestment; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      lastValueOfInvestment = valueOfInvestment; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      lastTransactionInvestment = transactionInvestment; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      lastValueOfInvestmentBeforeTransaction = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        valueOfInvestmentBeforeTransaction; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (order.itemType === 'start') { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        feesAtStartDate = fees; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |