Пример #1
0
        public bool ProcessMacroRunTask()
        {
            var macroId = 0;

            try
            {
                var macro = Queries.MacroRegister();
                var dt    = DataAccess.i.GetData(macro);

                if (dt.Rows.Count == 0)
                {
                    Log4Net.Log.Info($"No new pending Macro");
                    return(true);
                }
                else
                {
                    Log4Net.Log.Info($"Found Macro to RUN");
                }

                var affId = (long)dt.Rows[0]["AffiliateId"];
                macroId = (int)dt.Rows[0]["Id"];

                //var qry = Queries.UpdateIntTableServiceId("CalibrationRunMacroAnalysis", this.serviceId, macroId);
                //DataAccess.i.ExecuteQuery(qry);

                var qry = Queries.MacroRegisterUpdate(macroId, 4, "Processing");
                DataAccess.i.ExecuteQuery(qry);

                try
                {
                    var macroP = new Macro_Processor();
                    macroP.ProcessMacro(macroId, affId);

                    qry = Queries.MacroRegisterUpdate(macroId, 5, "Completed");
                    DataAccess.i.ExecuteQuery(qry);
                }
                catch (Exception ex)
                {
                    Log4Net.Log.Info("At Macro");
                    Log4Net.Log.Error(ex);
                    Log4Net.Log.Error(ex.ToString());
                    Log4Net.Log.Error(ex.StackTrace);
                    qry = Queries.MacroRegisterUpdate(macroId, 10, ex.ToString());
                    DataAccess.i.ExecuteQuery(qry);
                }
            }
            catch (Exception ex)
            {
                Log4Net.Log.Info("At Macro");
                Log4Net.Log.Error(ex);
                var qry = Queries.MacroRegisterUpdate(macroId, 10, ex.ToString());
                DataAccess.i.ExecuteQuery(qry);
            }
            return(true);
        }
Пример #2
0
        public List <IndexForecast> ComputeIndexForecast()
        {
            List <IndexForecast> indexForecast = new List <IndexForecast>();

            var statisticalInputs = GetStatisticalInputData();
            var principalData     = ComputeScenarioPrincipalComponents(statisticalInputs);

            double indexStandardDeviation = ComputeHistoricIndexStandardDeviation();
            double indexMean = ComputeHistoricIndexMean();

            var cp = new Macro_Processor().GetMacroResult_Statistics(this._eclId, this._eclType);

            var engenValues = statisticalInputs.Where(o => o.Mode == StatisticalInputsRowKeys.Eigenvalues).Select(p => p.MacroEconomicValue).ToList();

            for (int i = 0; i < engenValues.Count; i++)
            {
                if (i == 0)
                {
                    cp.IndexWeight1 = engenValues[i] / engenValues.Take(2).Sum();
                }

                if (i == 1)
                {
                    cp.IndexWeight2 = engenValues[i] / engenValues.Take(2).Sum();
                }

                if (i == 2)
                {
                    cp.IndexWeight3 = 0;// engenValues[i] / engenValues.Take(3).Sum();
                }
                if (i == 3)
                {
                    cp.IndexWeight4 = 0;// engenValues[i] / engenValues.Take(4).Sum();
                }
            }

            foreach (var itm in principalData)
            {
                double actual = (itm.Principal1 * cp.IndexWeight1.Value) + (itm.Principal2 * cp.IndexWeight2.Value) + (itm.Principal3 * cp.IndexWeight3.Value) + (itm.Principal4 * cp.IndexWeight4.Value);

                var dr = new IndexForecast();
                dr.Date         = itm.Date;
                dr.Actual       = actual;
                dr.Standardised = indexStandardDeviation == 0 ? 0 : (actual - indexMean) / indexStandardDeviation;

                indexForecast.Add(dr);
            }

            return(indexForecast);
        }
Пример #3
0
        protected List <PDI_StatisticalInputs> GetStatisticalInputData()
        {
            var actualMacEcoVar = new Macro_Processor().Get_MacroResult_SelectedMacroEconomicVariables(this._eclId, this._eclType.ToString());

            var prinCSummary = new Macro_Processor().GetMacroResult_PCSummary(this._eclId, this._eclType);

            var itms = new List <PDI_StatisticalInputs>();

            for (int i = 0; i < actualMacEcoVar.Count; i++)
            {
                var sub = prinCSummary.Where(o => o.PrincipalComponentIdB == i + 4).OrderBy(p => p.PricipalComponentLabelA).ToList();
                foreach (var _v in sub)
                {
                    itms.Add(new PDI_StatisticalInputs {
                        EclId = this._eclId, Mode = _v.PricipalComponentLabelA, MacroEconomicValue = _v.Value ?? 0, MacroEconomicVariableId = actualMacEcoVar[i].MacroeconomicVariableId
                    });
                }
            }

            return(itms);

            //foreach (var itm in prinCSummary)
            //{
            //    var o = new PDI_StatisticalInputs();

            //    if (itm.PrincipalComponentIdA == 1)
            //    {
            //        if(actualMacEcoVar.Count> itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 2)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 3)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 4)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 5)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 6)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    if (itm.PrincipalComponentIdA == 7)
            //    {
            //        if (actualMacEcoVar.Count > itm.PrincipalComponentIdB - varBle)
            //        {
            //            o.MacroEconomicVariableId = actualMacEcoVar[itm.PrincipalComponentIdB - varBle].MacroeconomicVariableId;
            //            o.MacroEconomicValue = itm.Value.Value;
            //            o.Mode = itm.PricipalComponentLabelA;
            //        }
            //    }
            //    itms.Add(o);
            //}



            //var obj = new ProcessECL_PD(this._eclId, this._eclType).Get_PDI_StatisticalInputs();
            //return obj;
        }