Beispiel #1
0
        public SessionData(
			int idSession,
			bool bIsPreTaxOnlyOperation,
			AtCalculationSession acs,
			List<PpaCalendar> calendarEntries,
			IFeedback hLogger)
        {
            m_idSession = idSession;
            m_gcFeedback = hLogger;

            Utility.clearCalendarData();
            m_pCalendar = Utility.m_calendar_data;

            FillCalendar(calendarEntries);

            m_pCalc = new CalcData();

            m_pCalc.m_bPreTaxCalculationsOnly = bIsPreTaxOnlyOperation;
            m_pCalc.m_calculation_id = idSession;
            m_pCalc.m_calc_from_date = acs.AtCalcYearmonthStart;
            m_pCalc.m_calc_to_date = acs.AtCalcYearmonthEnd;
            m_pCalc.m_bDataFilled = FillData(acs);

            Debug.IndentSize = 4;
            Debug.AutoFlush = true;

            g_hSessionData = this;
        }
        public bool calculateCoreAccountPerformance(CalcData pCalc)
        {
            m_calculation_id = pCalc.m_calculation_id;
            var iLoop = 0;
            foreach (var client in pCalc.m_client_data.Where(a => a.Value.m_bIsValid && !a.Value.m_client_generic_data.m_is_isam_account))
            {
                var pClient = client.Value;
                updateProgressStatus(((++iLoop) * 90) / pCalc.m_client_data.Count, pCalc.m_calculation_id);
                try
                {
                    var clientInvalidator = new ClientInvalidator(pClient);
                    foreach (var clientModelBench in pClient.m_client_model_bench)
                    {
                        if (clientModelBench.Key >= pCalc.m_calc_from_date &&
                            clientModelBench.Key <= pCalc.m_calc_to_date)
                        {
                            var message = string.Format("Calculating performance for the account: ID = {0} Yearmonth = {1}", client.Key, clientModelBench.Key);
                            m_logMessages.createLogRecord(
                                pCalc.m_calculation_id,
                                LogType.LOG_TYPE_CORE_ACCOUNT_CALCULATIONS,
                                LogSeverity.LOG_SEVERITY_STATUS,
                                message);

                            if (clientModelBench.Value.m_is_partial_month)
                            {
                                getBenchmarkDataForPartialMonths(cmbaIterator, theClientIterator, pCalcData);

                                //prepare daily returns
                                prepareBenchDailyReturnsForPartialMonths(cmbaIterator, theClientIterator, pCalcData);

                                //calculate turnover
                                getTurnoverForPartialMonths(cmbaIterator, theClientIterator, pCalcData);
                            }
                            else
                            {
                                getBenchmarkDataForFullMonths(clientModelBench.Key, clientModelBench.Value, pCalc);
                            }
                        }
                        else
                        {
                            clientInvalidator.Release();
                        }
                    }
                    clientInvalidator.Release();
                }
                catch (Exception exc)
                {
                    var clientId = client.Key;
                    var description = exc.ToString();
                    var details = "calculateCoreAccountPerformance";
                    var shortName = pClient.m_client_generic_data.m_sShortname;

                    m_logMessages.LogFailedAccount(m_calculation_id, LogType.LOG_TYPE_CORE_ACCOUNT_CALCULATIONS, description, details, clientId, shortName, exc);
                }
            }
        }
Beispiel #3
0
        public static bool CalculatePerformance(
            SessionData session, 
            CalcData pCalc, 
            IFeedback feedback)
        {
            var bComplete = false;

            //calculate the drift weights
            var objDriftCalculator = new DriftCalculator(feedback);
            if (objDriftCalculator.calculateDriftWeights(pCalc))
            {
                var objCoreAccountsPerformance = new CoreAccountsPerformance(feedback);
                if (objCoreAccountsPerformance.calculateCoreAccountPerformance(pCalc))
                {
                    FixedIncome.PrepareFixedIncomeBenchPerformance(session);

                    var objSimulatedBenchmark = new SimulatedBenchmark(feedback);
                    if (objSimulatedBenchmark.calculateSimulatedBenchMarkData(session, pCalc))
                    {
                        // Do after-tax calculations if needed
                        if (!(pCalc.m_bPreTaxCalculationsOnly))
                        {
                            var objATReturns = new Returns(feedback);
                            bComplete = objATReturns.calculateATReturns(pCalc);
                        }
                        else
                        {
                            bComplete = true;
                        }

                        FixedIncome.PrepareFixedIncomeMonthReturns(session);
                    }
                }
            }

            return bComplete;
        }
Beispiel #4
0
 private string createDataXML(CalcData pCalcData)
 {
     return string.Empty;
 }
Beispiel #5
0
 public bool calculateATReturns(CalcData pCalc)
 {
     return true;
 }
Beispiel #6
0
 private bool calculateAFEndMV2(
     CLIENT_FLOW_YEAR_MONTH_ASSET_FLOWS cfymafIterator,
     CLIENT_MODEL_BENCH_ALLOCATION cmbaIterator, CalcData pCalcData,
     CLIENT_DATA theClientIterator)
 {
     return true;
 }
Beispiel #7
0
 public bool calculateSimulatedBenchMarkData(SessionData session, CalcData pCalc)
 {
     return true;
 }
 private void prepareBenchDailyReturnsForPartialMonths(
     CLIENT_MODEL_BENCH_ALLOCATION cmbaIterator,
     CLIENT_DATA theClientIterator,
     CalcData pCalcData)
 {
 }
 private bool getTurnoverForPartialMonths(
     CLIENT_MODEL_BENCH_ALLOCATION cmbaIterator,
     CLIENT_DATA theClientIterator,
     CalcData pCalcData)
 {
     return false;
 }
        private void getBenchmarkDataForFullMonths(
            int yearMonth, 
            ClientModelBench clientModelBench,
            CalcData pCalcData)
        {
            foreach (var benchAllocation in clientModelBench.m_client_bench)
            {
                if (!pCalcData.m_perf_data.m_bench_data.ContainsKey(benchAllocation.m_bench_id)) continue;
                var benchMark = pCalcData.m_perf_data.m_bench_data[benchAllocation.m_bench_id];

                if (!benchMark.m_bench_monthly_returns.ContainsKey(yearMonth)) continue;
                var benchMonthlyReturns = benchMark.m_bench_monthly_returns[yearMonth];

                clientModelBench.m_totReturn = benchMonthlyReturns.m_total_return;
                clientModelBench.m_totPriceReturn = benchMonthlyReturns.m_price_return;
                clientModelBench.m_totTurnOver = benchMonthlyReturns.m_turnover;
                clientModelBench.m_totDivReturn = benchMonthlyReturns.m_dividend_return;
            }
        }
Beispiel #11
0
 public static void DumpAllAssetFlows(CalcData pCalcData)
 {
 }
Beispiel #12
0
 public static void CollateFixedIncomeFlows(CalcData pCalc)
 {
 }