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); }
public AggregatedMeasures AggregateMeasuresOnRating(List <Contract> contracts) { List <int> ratings = new List <int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; AggregatedMeasures measures = new AggregatedMeasures(); foreach (var rating in ratings) { foreach (Contract contract in contracts.Where(c => c.Rating == rating)) { double LGD = contract.CalculateLGD(); measures.AddLGD(rating, LGD); measures.AddLGDSquared(rating, LGD * LGD); } } return(measures); }