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); } } }
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; }
private string createDataXML(CalcData pCalcData) { return string.Empty; }
public bool calculateATReturns(CalcData pCalc) { return true; }
private bool calculateAFEndMV2( CLIENT_FLOW_YEAR_MONTH_ASSET_FLOWS cfymafIterator, CLIENT_MODEL_BENCH_ALLOCATION cmbaIterator, CalcData pCalcData, CLIENT_DATA theClientIterator) { return true; }
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; } }
public static void DumpAllAssetFlows(CalcData pCalcData) { }
public static void CollateFixedIncomeFlows(CalcData pCalc) { }