Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
 }
Пример #4
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);
        }