Exemplo n.º 1
0
        public RetirementPlan GetRetirementPlan()
        {
            var inputs = new RetirementPlanMainInputs
            {
                AnnualReturnMinRisk      = 2.5,
                AnnualReturnEquitiesRisk = 7,
                InflationReturnMinRisk   = 2,
                InflationEquities        = 2,
                ReturnAfterInflationCAGRReturnMinRisk     = 0.5,  // calculated
                ReturnAfterInflationAnnualAverageEquities = 5,    // calculated
                ReturnAfterInflationAnnualAverageMinRisk  = 0.5,  // calculated
                ReturnAfterInflationCAGREquities          = 6.07, // calculated
                StandardDeviationMinRisk   = 0,
                StandardDeviationEquities  = 15,
                GrowthInAnnualContribution = 0, // not relevant for me
                CurrentAmount             = 216385.01M,
                CurrentTotalContributions = 170211.24M,
                ThisYearsContributions    = 30000M,
                MinRiskAllocation         = 0,
                CurrentAge = 30,
                DeathAge   = 90
            };

            var retirementPlan = new RetirementPlan(inputs);

            return(retirementPlan);
        }
Exemplo n.º 2
0
        public RetirementPlan(RetirementPlanMainInputs inputs)
        {
            var yearCount     = 0;
            var currentAmount = inputs.CurrentAmount;

            for (var year = inputs.CurrentAge; year <= inputs.DeathAge; year++)
            {
                var thisYear = new Year(year, yearCount, currentAmount, inputs);
                Years.Add(thisYear);

                // setup next year
                yearCount++;
                currentAmount = thisYear.EndOfYearAmount;
            }
        }
Exemplo n.º 3
0
            public Year(int age, int yearCount, decimal priorYearAmount, RetirementPlanMainInputs inputs)
            {
                Age                 = age;
                YearCount           = yearCount;
                PriorYearAmount     = priorYearAmount;
                AnnualContributions = inputs.ThisYearsContributions;

                // Calculated
                StartOfYearAmount           = PriorYearAmount + AnnualContributions;
                MinRiskAllocationPercent    = inputs.MinRiskAllocation;
                MinRiskAllocationAmount     = StartOfYearAmount * (inputs.MinRiskAllocation / 100);
                EquityRiskAllocationPercent = 100M - inputs.MinRiskAllocation;
                EquityRiskAllocationAmount  = StartOfYearAmount * (EquityRiskAllocationPercent / 100);
                TotalContribution           = inputs.CurrentTotalContributions + AnnualContributions;
                MinRiskReturn    = inputs.ReturnAfterInflationAnnualAverageMinRisk;
                EquityRiskReturn = GetEquityReturnPercentage(inputs.ReturnAfterInflationAnnualAverageEquities, inputs.StandardDeviationEquities);
                InvestmentReturn = (MinRiskAllocationAmount * (decimal)MinRiskReturn) + (EquityRiskAllocationAmount * ((decimal)EquityRiskReturn / 100));
                EndOfYearAmount  = StartOfYearAmount + InvestmentReturn;
            }