public void GettingYieldCurveValuesIsQuick() { var snapshotManager = Context.MarketDataSnapshotManager; using (var dataSnapshotProcessor = snapshotManager.CreateFromViewDefinition(ViewDefinitionName)) { var beforeCurves = dataSnapshotProcessor.GetYieldCurves(); YieldCurveKey curveKey = beforeCurves.First(k => k.Value != null).Key; var beforeCurve = beforeCurves[curveKey].Item1.Curve; var manageableMarketDataSnapshot = dataSnapshotProcessor.Snapshot; var ycSnapshot = manageableMarketDataSnapshot.YieldCurves[curveKey]; const double f = 1.001; foreach (var value1 in ycSnapshot.Values.Values) { foreach (var valueSnapshot in value1.Value.Values) { valueSnapshot.OverrideValue = valueSnapshot.MarketValue * f; } } var afterCurves = dataSnapshotProcessor.GetYieldCurves(); Assert.NotEmpty(afterCurves); Assert.Empty(beforeCurves.Keys.Except(afterCurves.Keys)); var afterCurve = afterCurves[curveKey].Item1.Curve; //Curve should change Ys but not x Assert.Equal(beforeCurve.XData, afterCurve.XData); var diffs = beforeCurve.YData.Zip(afterCurve.YData, DiffProportion).ToList(); Assert.NotEmpty(diffs.Where(d => d > 0.001).ToList()); foreach (var value1 in ycSnapshot.Values.Values) { foreach (var valueSnapshot in value1.Value.Values) { valueSnapshot.OverrideValue = null; } } Dictionary <YieldCurveKey, Tuple <YieldCurve, InterpolatedYieldCurveSpecificationWithSecurities, NodalDoublesCurve> > timedCurves = null; TimeSpan time = Time(() => timedCurves = dataSnapshotProcessor.GetYieldCurves()); Assert.InRange(time, TimeSpan.Zero, TimeSpan.FromSeconds(3)); // TODO faster Console.Out.WriteLine(time); var diffs2 = beforeCurves[curveKey].Item1.Curve.YData.Zip(timedCurves[curveKey].Item1.Curve.YData, DiffProportion).ToList(); Assert.Empty(diffs2.Where(d => d > 0.001).ToList()); //TODO check nodal curves } }
private Dictionary <YieldCurveKey, Tuple <YieldCurve, InterpolatedYieldCurveSpecificationWithSecurities, NodalDoublesCurve> > GetYieldCurves(IViewCycle cycle, IViewComputationResultModel results) { var ret = new Dictionary <YieldCurveKey, Tuple <YieldCurve, InterpolatedYieldCurveSpecificationWithSecurities, NodalDoublesCurve> >(); foreach (var kvp in _specs) { YieldCurveKey key = kvp.Key; Dictionary <string, ValueRequirement> specs = kvp.Value; var curve = Get <YieldCurve>(specs[ValueRequirementNames.YieldCurve], results); var spec = Get <InterpolatedYieldCurveSpecificationWithSecurities>(specs[ValueRequirementNames.YieldCurveSpec], results); var interpolated = Get <NodalDoublesCurve>(specs[ValueRequirementNames.YieldCurveInterpolated], results); if (curve == null || spec == null || interpolated == null) { ret.Add(key, null); } else { ret.Add(key, new Tuple <YieldCurve, InterpolatedYieldCurveSpecificationWithSecurities, NodalDoublesCurve>(curve, spec, interpolated)); } } return(ret); }
private static UpdateAction <ManageableMarketDataSnapshot> PrepareCurveAddAction(YieldCurveKey key, ManageableYieldCurveSnapshot value) { var manageableYieldCurveSnapshot = value.Clone(); return(new UpdateAction <ManageableMarketDataSnapshot>( delegate(ManageableMarketDataSnapshot snap) { snap._yieldCurves.Add(key, manageableYieldCurveSnapshot.Clone()); snap.InvokePropertyChanged(new PropertyChangedEventArgs("YieldCurves")); } )); }
private static UpdateAction <ManageableMarketDataSnapshot> PrepareCurveRemoveAction(YieldCurveKey key, ManageableYieldCurveSnapshot value) { return(new UpdateAction <ManageableMarketDataSnapshot>( delegate(ManageableMarketDataSnapshot snap) { snap._yieldCurves.Remove(key); snap.InvokePropertyChanged(new PropertyChangedEventArgs("YieldCurves")); }, OverriddenYieldCurveDisappearingWarning.Of(key, value) )); }
public static IEnumerable <Warning> Of(YieldCurveKey key, ManageableYieldCurveSnapshot value) { return(value.HaveOverrides() ? new Warning[] { new OverriddenYieldCurveDisappearingWarning(key) } : new Warning[] { }); }
private OverriddenYieldCurveDisappearingWarning(YieldCurveKey key) : base(string.Format("Yield Curve {0} {1} will not be present in the new snapshot, overrides will be lost", key.Currency, key.Name)) { }
public static IEnumerable<Warning> Of(YieldCurveKey key, ManageableYieldCurveSnapshot value) { return value.HaveOverrides() ? new Warning[] { new OverriddenYieldCurveDisappearingWarning(key) } : new Warning[] { }; }