public void CalculateReturnShouldNotAnnualizeWhenGivenDoNotAnnualizeOption() { var month = new MonthYear(2013, 12); _returnSeries.AddReturn(month, 0.1m); _returnSeries.AddReturn(month.AddMonths(-1), 0.2m); _returnSeries.AddReturn(month.AddMonths(-2), 0.3m); _returnSeries.AddReturn(month.AddMonths(-3), 0.4m); _returnSeries.AddReturn(month.AddMonths(-4), 0.5m); _returnSeries.AddReturn(month.AddMonths(-5), 0.6m); _returnSeries.AddReturn(month.AddMonths(-6), 0.7m); _returnSeries.AddReturn(month.AddMonths(-7), 0.8m); _returnSeries.AddReturn(month.AddMonths(-8), 0.9m); _returnSeries.AddReturn(month.AddMonths(-9), 0.10m); _returnSeries.AddReturn(month.AddMonths(-10), 0.11m); _returnSeries.AddReturn(month.AddMonths(-11), 0.12m); _returnSeries.AddReturn(month.AddMonths(-12), 0.13m); _returnSeries.AddReturn(month.AddMonths(-13), 0.14m); var req = new CalculateReturnRequest(month, 13); req.AnnualizeAction = AnnualizeActionEnum.DoNotAnnualize; var result = _returnSeries.CalculateReturn(req); string expectedCalculation = @"((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + ((1 + 0.1) * (1 + 0.2) - 1)) * (1 + 0.3) - 1)) * (1 + 0.4) - 1)) * (1 + 0.5) - 1)) * (1 + 0.6) - 1)) * (1 + 0.7) - 1)) * (1 + 0.8) - 1)) * (1 + 0.9) - 1)) * (1 + 0.10) - 1)) * (1 + 0.11) - 1)) * (1 + 0.12) - 1)) * (1 + 0.13) - 1) = 50.80166493428326400"; var expectedResult = ReturnResult.CreateWithValue(50.80166493428326400m, expectedCalculation); Assert.NotNull(result); result.ShouldBeSameAs(expectedResult); }
private SerializableReturnResult CalculateNetOfFeesReturn( InvestmentVehicle portfolio, CalculateReturnRequest request) { var result = portfolio.CalculateReturn(request, FeeType.NetOfFees); return(new SerializableReturnResult(result)); }
private void AssertRequestAreEqual( CalculateReturnRequest requestUnderTest, CalculateReturnRequest expected) { Assert.Equal(requestUnderTest.AnnualizeAction, expected.AnnualizeAction); Assert.Equal(requestUnderTest.EndMonth, expected.EndMonth); Assert.Equal(requestUnderTest.NumberOfMonths, expected.NumberOfMonths); }
public void TwelveMonthShouldReturnRequestForThreeBeforeTheGivenEndDate() { var monthYear = new MonthYear(2000, 5); var request = CalculateReturnRequestFactory.TwelveMonth(monthYear); var expected = new CalculateReturnRequest() { AnnualizeAction = AnnualizeActionEnum.Annualize, EndMonth = monthYear, NumberOfMonths = 12 }; AssertRequestAreEqual(request, expected); }
public void YearToDateShouldReturnRequestFromFirstOfYearToEndMonth( int year, int month, int expectedNumberOfMonths) { var monthYear = new MonthYear(year, month); var request = CalculateReturnRequestFactory.YearToDate(monthYear); var expected = new CalculateReturnRequest() { AnnualizeAction = AnnualizeActionEnum.Annualize, EndMonth = monthYear, NumberOfMonths = expectedNumberOfMonths }; AssertRequestAreEqual(request, expected); }