コード例 #1
0
 /**
  * @param x An array of DoubleTimeSeries. The series <b>must</b> contain at least four elements;
  *     the asset price series, the dividend price series (can be null but it must be the second
  *     element), the reference price series and the reference dividend series. Any further
  *     elements will be ignored.
  * @throws IllegalArgumentException If the array is null
  * @throws TimeSeriesException Throws an exception if: the array is null; the array has less than
  *     two elements; the calculation mode is strict and the price series are not the same length.
  * @return A DoubleTimeSeries containing the excess return series.
  */
 @Override
 public LocalDateDoubleTimeSeries evaluate(final LocalDateDoubleTimeSeries... x) {
   Validate.notNull(x, "x");
   if (x.length < 4) {
     throw new TimeSeriesException("Time series array must contain at least four elements");
   }
   if (getMode() == CalculationMode.STRICT && x[0].size() != x[2].size()) {
     throw new TimeSeriesException(
         "Asset price series and reference price series were not the same size");
   }
   final LocalDateDoubleTimeSeries assetReturn =
       x[1] == null
           ? _returnCalculator.evaluate(x[0])
           : _returnCalculator.evaluate(Arrays.copyOfRange(x, 0, 2));
   final LocalDateDoubleTimeSeries referenceReturn =
       x[3] == null
           ? _returnCalculator.evaluate(x[2])
           : _returnCalculator.evaluate(Arrays.copyOfRange(x, 2, 4));
   return (LocalDateDoubleTimeSeries) assetReturn.subtract(referenceReturn);
 }