public void returns_undefined_with_single_negative_input() { //arrange const double minimumAcceptableReturn = 0.05; var inputData = new[] { -1.0 }; //act var dsDeviation = inputData.DownsideDeviation(minimumAcceptableReturn); //assert Assert.AreEqual(double.NaN, dsDeviation); }
public void only_uses_data_points_below_the_minimum_acceptable_return() { //arrange const double minimumAcceptableReturn = 0.05; var inputData = new[] { 0.0021, 0.02, 0.5, 0.12 }; var expectedSemiDeviation = inputData.Where(x => x < minimumAcceptableReturn).StandardDeviation(); //act var semiDeviation = inputData.DownsideDeviation(minimumAcceptableReturn); //assert Assert.AreEqual(expectedSemiDeviation, semiDeviation); }
public void handles_negative_values() { //arrange const double minimumAcceptableReturn = 0.05; var inputData = new[] { -0.1, -0.02, 0.4, 0.12 }; var expectedSemiDeviation = inputData.Where(x => x < minimumAcceptableReturn).StandardDeviation(); //act var semiDeviation = inputData.DownsideDeviation(minimumAcceptableReturn); //assert Assert.AreEqual(expectedSemiDeviation, semiDeviation); }