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);
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }