Exemplo n.º 1
0
        public void XirrTest_2()
        {
            var values = new List <double>
            {
                -100,
                20,
                40,
                25,
                8,
                15
            };
            var dates = new List <DateTime>
            {
                new DateTime(2016, 01, 01),
                new DateTime(2016, 04, 01),
                new DateTime(2016, 10, 01),
                new DateTime(2017, 02, 01),
                new DateTime(2017, 03, 01),
                new DateTime(2017, 06, 01)
            };
            var result = XirrImpl.GetXirr(values, dates);
            var retVal = Math.Round(result.Result, 4);

            Assert.AreEqual(0.0944, retVal);
        }
Exemplo n.º 2
0
        public void XirrTest_3()
        {
            var values = new List <double>
            {
                -10000,
                2750,
                4250,
                3250,
                2750
            };
            var dates = new List <DateTime>
            {
                new DateTime(2008, 01, 01),
                new DateTime(2008, 03, 01),
                new DateTime(2008, 10, 30),
                new DateTime(2009, 02, 15),
                new DateTime(2009, 04, 01)
            };
            var result = XirrImpl.GetXirr(values, dates, 0.1);
            var retVal = Math.Round(result.Result, 4);

            Assert.AreEqual(0.3734, retVal);
        }
Exemplo n.º 3
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 2);
            var values = ArgsToDoubleEnumerable(new List <FunctionArgument> {
                arguments.ElementAt(0)
            }, context).Select(x => (double)x);
            var dates = ArgsToDoubleEnumerable(new List <FunctionArgument> {
                arguments.ElementAt(1)
            }, context).Select(x => System.DateTime.FromOADate(x));
            var guess = 0.1;

            if (arguments.Count() > 2)
            {
                guess = ArgToDecimal(arguments, 2);
            }
            var result = XirrImpl.GetXirr(values, dates, guess);

            if (result.HasError)
            {
                return(CreateResult(result.ExcelErrorType));
            }
            return(CreateResult(result.Result, DataType.Decimal));
        }