public void AddMonthsTest() { var my = new MonthYear(1, 2000); var actual = my.AddMonths(1); var expected = new MonthYear(2, 2000); Assert.AreEqual(expected.Month, actual.Month); Assert.AreEqual(expected.Year, actual.Year); actual = my.AddMonths(-1); expected = new MonthYear(12, 1999); Assert.AreEqual(expected.Month, actual.Month); Assert.AreEqual(expected.Year, actual.Year); }
private InvestmentVehicleReturnsRepositoryStub CreateRepositoryStubWithSinglePortfolio( MonthYear monthYear) { var repositoryStub = new InvestmentVehicleReturnsRepositoryStub(); var portfolio = InvestmentVehicleBuilderForTests .SetupPortfolio(100, "Portfolio100") .AddNetReturn(monthYear, 0.1m) .AddNetReturn(monthYear.AddMonths(-1), 0.2m) .AddNetReturn(monthYear.AddMonths(-2), 0.3m) .AddNetReturn(monthYear.AddMonths(-3), 0.4m) .AddNetReturn(monthYear.AddMonths(-4), 0.5m) .Create(); repositoryStub.AddInvestmentVehicle(portfolio); return(repositoryStub); }
public void ShouldWriteMonthForYearToCurrentMonth() { var monthYear = new MonthYear(2000, 3); var investmentVehicle = InvestmentVehicleFactoryForTests .SetupPortfolio(100, "Portfolio 100") .AddNetReturn(monthYear, 0.1m) .AddNetReturn(monthYear.AddMonths(-1), 0.2m) .AddNetReturn(monthYear.AddMonths(-2), 0.3m) .AddNetReturn(monthYear.AddMonths(-3), 0.4m) .Create(); _investmentVehicleReturnsRepositoryStub.AddInvestmentVehicle(investmentVehicle); var omniDataFileCreator = CreateOmniDataFileCreator(); omniDataFileCreator.CreateFile(monthYear, _fullFilePath); Assert.Equal(6, _flatFileIoSpy.NumberOfLines); Assert.True(_flatFileIoSpy.ContainsLine("100|Portfolio|Portfolio 100|N|M|2000-3-31|0.1")); Assert.True(_flatFileIoSpy.ContainsLine("100|Portfolio|Portfolio 100|N|M|2000-2-29|0.2")); Assert.True(_flatFileIoSpy.ContainsLine("100|Portfolio|Portfolio 100|N|M|2000-1-31|0.3")); }
public void CalculateReturnShouldApplyGeoMetricLinkingWhenGivenMultipleMonths() { var month = new MonthYear(2013, 1); var previousMonth = month.AddMonths(-1); _returnSeries.AddReturn(previousMonth, 0.2m); _returnSeries.AddReturn(month, 0.1m); var result = _returnSeries.CalculateReturn(new CalculateReturnRequest(month, 2)); var expectedResult = ReturnResult.CreateWithValue(0.32m, "((1 + 0.2) * (1 + 0.1) - 1) = 0.32"); Assert.NotNull(result); result.ShouldBeSameAs(expectedResult); }
public void CalculateReturnShouldErrorWhenMonthMissing() { var month = new MonthYear(2013, 1); var previousMonth = month.AddMonths(-1); var previousMonth2 = previousMonth.AddMonths(-1); _returnSeries.AddReturn(previousMonth2, 0.3m); //_returnSeries.AddReturn(previousMonth, 0.2m); -- Missing _returnSeries.AddReturn(month, 0.1m); var result = _returnSeries.CalculateReturn(new CalculateReturnRequest(month, 2)); var expectedResult = ReturnResult.CreateWithError("Could not find a complete / unique set of months."); Assert.NotNull(result); result.ShouldBeSameAs(expectedResult); }
public AdvancedPageViewModel() : base() { Culture = CultureInfo.CreateSpecificCulture("en-GB"); // testing all kinds of adding events // when initializing collection MonthYear = MonthYear.AddMonths(1); Task.Delay(5000).ContinueWith(_ => { // indexer - update later Task.Delay(3000).ContinueWith(t => { MonthYear = MonthYear.AddMonths(-2); // get observable collection later }, TaskScheduler.FromCurrentSynchronizationContext()); }, TaskScheduler.FromCurrentSynchronizationContext()); }
private InvestmentVehicle SetupFourMonthsOfData( MonthYear monthYear) { var investmentVehicle = InvestmentVehicleFactoryForTests .SetupPortfolio(100, "Portfolio 100") .AddNetReturn(monthYear, 0.1m) .AddNetReturn(monthYear.AddMonths(-1), 0.2m) .AddNetReturn(monthYear.AddMonths(-2), 0.3m) .AddNetReturn(monthYear.AddMonths(-3), 0.4m) .AddGrossReturn(monthYear, 0.5m) .AddGrossReturn(monthYear.AddMonths(-1), 0.6m) .AddGrossReturn(monthYear.AddMonths(-2), 0.7m) .AddGrossReturn(monthYear.AddMonths(-3), 0.8m) .Create(); return(investmentVehicle); }
public AdvancedPageViewModel() : base() { Culture = CultureInfo.CreateSpecificCulture("en-GB"); // testing all kinds of adding events // when initializing collection Events = new EventCollection { [DateTime.Now.AddDays(-3)] = new List <AdvancedEventModel>(GenerateEvents(10, "Cool")), [DateTime.Now.AddDays(-6)] = new DayEventCollection <AdvancedEventModel>(Color.Purple, Color.Purple) { new AdvancedEventModel { Name = "Cool event1", Description = "This is Cool event1's description!", Starting = new DateTime() }, new AdvancedEventModel { Name = "Cool event2", Description = "This is Cool event2's description!", Starting = new DateTime() } } }; //Adding a day with a different dot color Events.Add(DateTime.Now.AddDays(-2), new DayEventCollection <AdvancedEventModel>(GenerateEvents(10, "Cool")) { EventIndicatorColor = Color.Blue, EventIndicatorSelectedColor = Color.Blue }); Events.Add(DateTime.Now.AddDays(-4), new DayEventCollection <AdvancedEventModel>(GenerateEvents(10, "Cool")) { EventIndicatorColor = Color.Green, EventIndicatorSelectedColor = Color.White }); Events.Add(DateTime.Now.AddDays(-5), new DayEventCollection <AdvancedEventModel>(GenerateEvents(10, "Cool")) { EventIndicatorColor = Color.Orange, EventIndicatorSelectedColor = Color.Orange }); // with add method Events.Add(DateTime.Now.AddDays(-1), new List <AdvancedEventModel>(GenerateEvents(5, "Cool"))); // with indexer Events[DateTime.Now] = new List <AdvancedEventModel>(GenerateEvents(2, "Boring")); MonthYear = MonthYear.AddMonths(1); Task.Delay(5000).ContinueWith(_ => { // indexer - update later Events[DateTime.Now] = new ObservableCollection <AdvancedEventModel>(GenerateEvents(10, "Cool")); // add later Events.Add(DateTime.Now.AddDays(3), new List <AdvancedEventModel>(GenerateEvents(5, "Cool"))); // indexer later Events[DateTime.Now.AddDays(10)] = new List <AdvancedEventModel>(GenerateEvents(10, "Boring")); // add later Events.Add(DateTime.Now.AddDays(15), new List <AdvancedEventModel>(GenerateEvents(10, "Cool"))); Task.Delay(3000).ContinueWith(t => { MonthYear = MonthYear.AddMonths(-2); // get observable collection later var todayEvents = Events[DateTime.Now] as ObservableCollection <AdvancedEventModel>; // insert/add items to observable collection todayEvents.Insert(0, new AdvancedEventModel { Name = "Cool event insert", Description = "This is Cool event's description!", Starting = new DateTime() }); todayEvents.Add(new AdvancedEventModel { Name = "Cool event add", Description = "This is Cool event's description!", Starting = new DateTime() }); }, TaskScheduler.FromCurrentSynchronizationContext()); }, TaskScheduler.FromCurrentSynchronizationContext()); }
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); }
public void CalculateReturnShouldAnnualizeGivenMonthsGreaterThan12() { 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 result = _returnSeries.CalculateReturn(new CalculateReturnRequest(month, 13)); 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" + System.Environment.NewLine + @"((1 + 50.80166493428326400) ^ (12 * 1 / 13)) - 1 = 37.2358830610463"; var expectedResult = ReturnResult.CreateWithValue(37.2358830610463m, expectedCalculation); Assert.NotNull(result); result.ShouldBeSameAs(expectedResult); }