@Override public Pair<double[], double[]> visitDelta( final BlackVolatilitySurfaceDelta surface, final DoublesPair data) { Validate.isTrue(data.first > 0.0 && data.first < 1.0, "cut off must be a valide delta (0,1)"); Validate.isTrue( data.second > 0.0 && data.second < data.first, "spread must be positive and numerically less than cutoff"); final double[] deltas = new double[2]; final double[] k = new double[2]; final double[] vols = new double[2]; deltas[0] = data.first; deltas[1] = data.first - data.second; vols[0] = surface.getVolatilityForDelta(_t, deltas[0]); vols[1] = surface.getVolatilityForDelta(_t, deltas[1]); k[0] = BlackFormulaRepository.strikeForDelta(_f, deltas[0], _t, vols[0], true); k[1] = BlackFormulaRepository.strikeForDelta(_f, deltas[1], _t, vols[1], true); Validate.isTrue(k[0] < k[1], "need first (cutoff) strike less than second"); return new ObjectsPair<double[], double[]>(k, vols); }