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);
 }