/// <summary> /// Calculate the Unrealized Pnl for the passed TaxLotStatus /// </summary> /// <param name="env"></param> /// <param name="i"></param> /// <param name="trade"></param> /// <returns></returns> private double CalculateUnrealizedPnl(PostingEngineEnvironment env, TaxLotDetail i, Transaction trade, double workingQuantity) { var fxrate = FxRates.Find(env.ValueDate, i.Trade.SettleCurrency).Rate; double multiplier = 1.0; if (env.SecurityDetails.ContainsKey(trade.BloombergCode)) { multiplier = env.SecurityDetails[trade.BloombergCode].Multiplier; } if (env.TaxLotStatus.ContainsKey(i.Trade.LpOrderId)) { var lot = i.TaxLotStatus; var quantity = lot.Quantity; var unrealizedPnl = (trade.SettleNetPrice - i.Trade.SettleNetPrice) * quantity * fxrate * multiplier; return(unrealizedPnl); } return(0); }
private double CalculateTaxImplication(PostingEngineEnvironment env, TaxLotDetail i, Transaction trade, double workingQuantity) { var unrealizedPnl = CalculateUnrealizedPnl(env, i, trade, workingQuantity); var taxrate = Convert.ToDouble(i.TaxRate.Rate); var taxImplication = unrealizedPnl * taxrate; return(taxImplication); }