public Dictionary <string, IVolSurface> GetATMVegaScenarios(double bumpSize, DateTime?LastSensitivityDate) { var o = new Dictionary <string, IVolSurface>(); var lastBumpIx = Expiries.Length; if (LastSensitivityDate.HasValue) { var ix = Array.BinarySearch(Expiries, LastSensitivityDate.Value); ix = (ix < 0) ? ~ix : ix; ix += 2; lastBumpIx = Min(ix, lastBumpIx); //cap at last pillar } for (var i = 0; i < lastBumpIx; i++) { var volsBumped = (double[][])Volatilities.Clone(); volsBumped[i] = volsBumped[i].Select(x => x + bumpSize).ToArray(); o.Add(PillarLabels[i], new GridVolSurface(OriginDate, Strikes, Expiries, volsBumped, StrikeType, StrikeInterpolatorType, TimeInterpolatorType, TimeBasis, PillarLabels) { Currency = Currency, AssetId = AssetId }); } return(o); }
public VolatilitiesTests() { objectToTest = new Volatilities(FakeDataBase); }