示例#1
0
        private double GetSumProductValue(List <LgdCollateralProjection> collateralProjections, long ttrMonth, double[] fsvArray, long month)
        {
            long minMonth      = Math.Min(month + ttrMonth, FrameworkConstants.TempExcelVariable_LIM_CM);
            var  projectionsDr = collateralProjections.FirstOrDefault(x => x.Month == minMonth);

            double[] projections = new double[9];
            projections[0] = projectionsDr.Cash;
            projections[1] = projectionsDr.Commercial_Property;
            projections[2] = projectionsDr.Debenture;
            projections[3] = projectionsDr.Inventory;
            projections[4] = projectionsDr.Plant_And_Equipment;
            projections[5] = projectionsDr.Receivables;
            projections[6] = projectionsDr.Residential_Property;
            projections[7] = projectionsDr.Shares;
            projections[8] = projectionsDr.Vehicle;

            double sumProduct = ExcelFormulaUtil.SumProduct(fsvArray, projections);

            return(sumProduct);
        }
示例#2
0
        protected List <IndexForecast> ComputeScenarioPrincipalComponents(List <PDI_StatisticalInputs> statisticalInputs)
        {
            var principalData = new List <IndexForecast>();


            var standardisedData = ComputeScenarioStandardisedData(statisticalInputs);

            standardisedData = standardisedData.OrderBy(o => o.Date).ToList();
            var macroeconomicPrincipal1 = statisticalInputs.Where(o => o.Mode == StatisticalInputsRowKeys.PrincipalScore1).ToList();
            var macroeconomicPrincipal2 = statisticalInputs.Where(o => o.Mode == StatisticalInputsRowKeys.PrincipalScore2).ToList();
            var macroeconomicPrincipal3 = statisticalInputs.Where(o => o.Mode == StatisticalInputsRowKeys.PrincipalScore3).ToList();
            var macroeconomicPrincipal4 = statisticalInputs.Where(o => o.Mode == StatisticalInputsRowKeys.PrincipalScore4).ToList();


            var groupedDate        = standardisedData.GroupBy(x => x.Date).Select(x => new { Date = x.Key, Cnt = x.Count() }).ToList();
            var macroEconomicCount = 0;

            if (groupedDate.Count > 0)
            {
                macroEconomicCount = groupedDate.Max(r => r.Cnt);
            }

            foreach (var dt in groupedDate)
            {
                var date_standardisedData = standardisedData.Where(o => o.Date == dt.Date).ToList();

                double[] standardised = new double[date_standardisedData.Count];
                double[] principal1   = new double[macroeconomicPrincipal1.Count];
                double[] principal2   = new double[macroeconomicPrincipal2.Count];
                double[] principal3   = new double[macroeconomicPrincipal3.Count];
                double[] principal4   = new double[macroeconomicPrincipal4.Count];

                for (int i = 0; i < date_standardisedData.Count; i++)
                {
                    standardised[i] = date_standardisedData[i].MacroEconomicValue;

                    if (principal1.Length - 1 >= i)
                    {
                        var p1 = macroeconomicPrincipal1.FirstOrDefault(o => o.MacroEconomicVariableId == date_standardisedData[i].MacroEconomicVariableId);
                        principal1[i] = p1 != null ? p1.MacroEconomicValue : 0;
                    }

                    if (principal2.Length - 1 >= i)
                    {
                        var p2 = macroeconomicPrincipal2.FirstOrDefault(o => o.MacroEconomicVariableId == date_standardisedData[i].MacroEconomicVariableId);
                        principal2[i] = p2 != null ? p2.MacroEconomicValue : 0;
                    }
                    if (principal3.Length - 1 >= i)
                    {
                        var p3 = macroeconomicPrincipal3.FirstOrDefault(o => o.MacroEconomicVariableId == date_standardisedData[i].MacroEconomicVariableId);
                        principal3[i] = p3 != null ? p3.MacroEconomicValue : 0;
                    }
                    if (principal4.Length - 1 >= i)
                    {
                        var p4 = macroeconomicPrincipal4.FirstOrDefault(o => o.MacroEconomicVariableId == date_standardisedData[i].MacroEconomicVariableId);
                        principal4[i] = p4 != null ? p4.MacroEconomicValue : 0;
                    }
                }

                var itm = standardisedData.FirstOrDefault(o => o.Date == dt.Date);

                itm.Principal1 = ExcelFormulaUtil.SumProduct(standardised, principal1);
                itm.Principal2 = ExcelFormulaUtil.SumProduct(standardised, principal2);
                itm.Principal3 = ExcelFormulaUtil.SumProduct(standardised, principal3);
                itm.Principal4 = ExcelFormulaUtil.SumProduct(standardised, principal4);

                //Log4Net.Log.Info($"{itm.Date},{itm.MacroEconomicVariableId},{itm.MacroEconomicValue},{this._Scenario.ToString()}++++++");
                principalData.Add(itm);
            }

            return(principalData);
        }
示例#3
0
        protected double ComputeStageDaysPastDue(string date)
        {
            var r = date == null ? 0 : ExcelFormulaUtil.YearFrac(DateTime.Parse(date), GetReportingDate(_eclType, _eclId)) * 365;

            return(r);
        }