public static Curve GetXSlice(this VolatilitySurfaceData <Tenor, Tenor> surface, Tenor x) { return(new InterpolatedDoublesCurve(string.Format("Expiry {0}", x), surface.Ys.Select(t => t.TimeSpan.TotalMilliseconds).ToArray(), surface.Ys.Select(y => surface[x, y]).ToArray() )); }
public static Curve GetYSlice(this VolatilitySurfaceData <Tenor, Tenor> surface, Tenor y) { var values = surface.Xs.Select( delegate(Tenor t) { double value; var have = surface.TryGet(t, y, out value); return(Tuple.Create(t.TimeSpan.TotalMilliseconds, have, value)); }).Where(t => t.Item2); return(new InterpolatedDoublesCurve(string.Format("Swap length {0}", y), values.Select(t => t.Item1).ToArray(), values.Select(t => t.Item3).ToArray() )); }