public void TestLargestLGDFiltration() { CounterpartyRiskInput input = GetInput(); CounterpartyRisk risk = new CounterpartyRisk(); CounterpartyRiskOutput output = risk.GetCounterpartyRisk(input); string[] top10Names = { "Name 11", "Name 13", "Name 1", "Name 12", "Name 2", "Name 7", "Name 14", "Name 8", "Name 9", "Name 10" }; double[] top10LGD = { 138768931, 27167922, 27089285, 16004884, 8198016, 6666523, 1322415, 236903, 233175, 148366, 83961, 48854, 22761, 20375 }; Queue <CounterpartDTO> largestCounterparts = new Queue <CounterpartDTO>(); foreach (CounterpartDTO counterpart in output.LargestCounterparts.OrderByDescending(c => c.TotalLGD).ToList()) { largestCounterparts.Enqueue(counterpart); } for (int i = 0; i < 10; i++) { CounterpartDTO nextCounterpart = largestCounterparts.Dequeue(); Assert.AreEqual(top10Names[i], nextCounterpart.Name); double delta = GetDelta(nextCounterpart.TotalLGD); Assert.AreEqual(top10LGD[i], nextCounterpart.TotalLGD, delta); } }
public void TestModule() { CounterpartyRiskInput input = GetInput(); CounterpartyRisk risk = new CounterpartyRisk(); CounterpartyRiskOutput output = risk.GetCounterpartyRisk(input); double TotalK = 153268358.287; double delta = GetDelta(TotalK); Assert.AreEqual(TotalK, output.TotalLossPotentialCounterPartyRisk, delta); }
public CounterpartyRiskOutput CalculateCounterpartyRisk(AggregatedMeasures measures, Parameters Parameters) { this.measures = measures; this.Parameters = Parameters; output = new CounterpartyRiskOutput(); output.VInter = CalculateVInter(); output.VIntra = CalculateVIntra(); output.V = CalculateV(); output.StD3 = CalculateStD3(); output.StD5 = CalculateStD5(); output.SumLGD = CalculateSumLGD(); output.KType1 = CalculateKType1(); output.KType2 = CalculateKType2(); output.TotalLossPotentialCounterPartyRisk = CalculateTotalLossPotentialCounterpartyRisk(); return(output); }
public CounterpartyRiskOutput GetCounterpartyRisk(CounterpartyRiskInput input) { List <Contract> Contracts = RefineDTOContracts(input); input.Parameters.SumReinsurersShareSimplified = CalcSumReinsurersShareSimplified(input); AggregatedMeasures measures = AggregateMeasuresOnRating(Contracts); CounterpartyRiskCalculator calculator = new CounterpartyRiskCalculator(); CounterpartyRiskOutput output = calculator.CalculateCounterpartyRisk(measures, input.Parameters); ContractsFilter filter = new ContractsFilter(); List <CounterpartDTO> largestCounterparts = filter.FilterCounterpartsOnLGD(Contracts); output.LargestCounterparts = largestCounterparts; return(output); }