final Function1D<Double, Double>[] scenarioSmileFits = Arrays.copyOf(smileFitsBase, smileFitsBase.length);
scenarioSmileFits[t] = thisExpirysSmile;
final BlackVolatilitySurfaceMoneynessFcnBackedByGrid shiftedSurface = surfaceInterpolator.combineIndependentSmileFits(scenarioSmileFits, volGrid);
//BlackVolatilitySurfaceMoneynessFcnBackedByGrid shiftedSurface = surfaceInterpolator.getBumpedVolatilitySurface(volGrid, t, k, -shift);
final StaticReplicationDataBundle shiftedMarket = market.withShiftedSurface(shiftedSurface);
final Double pvScenario = option.accept(_pricer, shiftedMarket);
ArgumentChecker.notNull(pvScenario, "Null PV in shifted scenario, T = " + volExpiries[t] + ", k = " + strikes[t][k]);
final Double vega = (pvScenario - pvBase) / -shift;
final Triple<Double, Double, Double> xyz = new Triple<>(volExpiries[t], strikes[t][k], vega);
triplesExpiryStrikeVega.add(xyz);