コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #10
0
        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);
        }