Пример #1
0
        public void T04_Rates()
        {
            AssertEqual(0.12682503013196972066, F.CompoundRate(0.01, 12));
            AssertEqual(0.44061124131308475614, F.CompoundRate(0.001, 365.25));
            AssertEqual(-.113615128283870719341199, F.CompoundRate(-0.01, 12));
            AssertEqual(0.0040741237836483016054, F.PeriodicRate(0.05, 12));
            AssertEqual(0.00013358911160635399973, F.PeriodicRate(0.05, 365.25));
            AssertEqual(-0.004265318777560644925018, F.PeriodicRate(-0.05, 12));
            AssertEqual(-0.000140423526107102958349, F.PeriodicRate(-0.05, 365.25));

            AssertEqual(.05116189788173318980487, F.EffectiveRate(.05, 12));
            AssertEqual(-.04886993281129903190071, F.EffectiveRate(-.05, 12));
            AssertEqual(.05, F.NominalRate(.05116189788173318980487, 12));
            AssertEqual(-.05, F.NominalRate(-.04886993281129903190071, 12));
            AssertEqual(.04888948540377961926506, F.NominalRate(0.05, 12));

            AssertEqual(-0.02439024390243902439024, F.InvertRate(.025));
            AssertEqual(.025, F.InvertRate(-0.02439024390243902439024));

            AssertEqual(0.004878048780487804878049, F.CombineRates(.03, F.InvertRate(.025)));
            AssertEqual(0.02081738306172299391155, F.CombineRates(.05, F.InvertRate(.0035), F.InvertRate(0.025)));
            AssertEqual(0.02081738306172299391155, F.CombineRates(new[] { .05, F.InvertRate(.0035), F.InvertRate(0.025) }));
            Assert.AreEqual(0.25, F.CombineRates(new[] { .25 }));

            AssertEqual(0.0077014724882020438160, F.Rate(-200, 4 * 12, 8000));
            AssertEqual(0.013910762587407681666, F.Rate(-200, 4 * 12, 8000, -2000));
            AssertEqual(0.0080529819239060342467, F.Rate(-200, 4 * 12, 8000, false));
            AssertEqual(0.014414334213886103585, F.Rate(-200, 4 * 12, 8000, -2000, false));
            AssertEqual(0.0049355932778172330408, F.Rate(50, 21, -1000));
            AssertEqual(-0.06765766138943930352052, F.Rate(100, 10, -1500));
        }
Пример #2
0
 public void T03_PV()
 {
     AssertEqual(-60716.104029902083489, F.PresentValue(.05 / 12, 0, 10 * 12, 100000));
     TestInvestment(.08 / 12, 500, 12 * 20, -59777.145851188021817);
     TestInvestment(.045 / 12, -1250, 30 * 12, 246701.44876107713821);
     TestInvestment(F.PeriodicRate(.05, 12), -250, 10 * 12, -37699.927708720942270, 100000);
     TestInvestment(0.05 / 12, -1250, 30 * 12, 232852.02130759440896);
     TestInvestment(F.PeriodicRate(.05, 365.25), 1000, 20 * 12, -236177.89990613201544);
     TestInvestment(.09 / 12, 100, 7 * 12, -6262.0119295608783911, 0, false);
     TestInvestment(.05 / 12, -100, 10 * 12, -51248.685101108485610, 100000, false);
     TestInvestment(-.05 / 12, -100, 10 * 12, -149498.8168650295333123, 100000, false);
     TestInvestment(0, 100, 10, 0, -1000);
 }
Пример #3
0
        public void T02_FV()
        {
            TestInvestment(.01, -1000, 12, 0, 12682.503013196972066);
            TestInvestment(.05 / 12, -500, 10 * 12, 0, 77641.139722833964102);
            TestInvestment(.02 / 12, 0, 5 * 12, -10000, 11050.789265308194982);
            TestInvestment(F.PeriodicRate(.05, 12), -500, 10 * 12, -3000, 82068.264531065282197);
            TestInvestment(.03, 1000, 5, 0, -5468.4098843, false);
            TestInvestment(.06 / 12, -200, 10, -500, 2581.4033740601791537, false);
            TestInvestment(.09 / 12, -100, 7 * 12, 0, 11730.013040950889105, false);
            TestInvestment(0, -100, 10, -1000, 2000);
            TestInvestment(0, 100, 10, -1000, 0, false);
            TestInvestment(-0.1, 100, 10, -10000, 2835.462841100002151506487);

            AssertEqual(-40, F.FutureValue(0.1, new[] { -100d, 10, 10, 10, 10, 70 }));
            AssertEqual(31.6712, F.FutureValue(0.1, new[] { 2d, 3, 5 }.Concat(new[] { 7d, 11 }))); // try a non IList<T>
            AssertEqual(41.902, F.FutureValue(-0.1, new[] { -100d, 10, 10, 10, 10, 70 }));
        }
Пример #4
0
        public void T05_Periods()
        {
            AssertEqual(60.082122853761722554, F.Periods(0.01, -100, -1000, 10000, true));
            AssertEqual(59.673865674294625588, F.Periods(0.01, -100, -1000, 10000, false));
            AssertEqual(-9.5785940398131666704, F.Periods(0.01, -100, -1000, 0));
            AssertEqual(28.911809737480831494, F.Periods(0.01, 100, -1000, -2000));
            AssertEqual(8.6690930741204999513, F.Periods(0.01, 100, 1000, -2000, false));
            AssertEqual(10.802372638626807957, F.Periods(.05 / 12, -1000, 100000) / 12);
            AssertEqual(3.8598661626226451824, F.Periods(F.PeriodicRate(.025, 12), 0, -2000, 2200) / 12);
            AssertEqual(14.51957583084954867337, F.Periods(-.05 / 12, 100, -1500));
            AssertEqual(10, F.Periods(-0.06765766138943930352052, 100, -1500));
            Assert.AreEqual(0, F.Periods(0.01, 100, -1000, 1000));

            TestInvestment(0, -100, 10, 1000);
            TestInvestment(0, -100, 30, 1000, 2000);
            Assert.AreEqual(0, F.Periods(0, -100, 1000, -1000));

            Assert.AreEqual(0, F.Periods(0, 0, 1000, 1000));
            Assert.IsNaN(F.Periods(0, 0, 1000, 2000));
            Assert.IsNaN(F.Periods(0, 0, 1000, -2000));
        }