Example #1
0
        private static Amount CalculateCorrelatedSumRisks(Currency calculationCurrency, List <MarginRisk> riskMargins)
        {
            Amount sum = Amount.OfZero(calculationCurrency);

            foreach (MarginRisk marginRisk1 in riskMargins)
            {
                foreach (MarginRisk marginRisk2 in riskMargins)
                {
                    SensitivityRisk risk1 = marginRisk1.Risk;
                    SensitivityRisk risk2 = marginRisk2.Risk;

                    if (risk1 != risk2)
                    {
                        Decimal correlation = ModelParameters.GetCorrelationRisk(risk1, risk2);
                        sum += marginRisk1.Value * marginRisk2.Value * correlation;
                    }
                }
            }

            return(sum);
        }