public InitialMargin GetInitialMarginRequirement(InitialMarginParameters parameters) { EnsureSecurityExists(parameters.Security); var expected = SecurityModel.GetInitialMarginRequirement(parameters); if (reentry) { return(expected); } reentry = true; var actual = PositionGroupModel.GetInitialMarginRequirement(new PositionGroupInitialMarginParameters( Portfolio, new PositionGroup(PositionGroupModel, new Position(parameters.Security, parameters.Quantity)) )); Assert.AreEqual(expected.Value, actual.Value, $"{PositionGroupModel.GetType().Name}:{nameof(GetInitialMarginRequirement)}" ); reentry = false; return(expected); }