Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading.Views/3.4/SolutionLineChartView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading.Views/3.4/SolutionLineChartView.cs	(revision 9989)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading.Views/3.4/SolutionLineChartView.cs	(revision 9991)
@@ -65,5 +65,5 @@
         this.chart.Series[SIGNALS_SERIES_NAME].Tag = Content;
 
-        IEnumerable<double> accumulatedPrice = GetAccumulatedPrices(Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.PriceVariable));
+        IEnumerable<double> accumulatedPrice = GetAccumulatedPrices(Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.PriceChangeVariable));
         this.chart.Series.Add(PRICEVARIABLE_SERIES_NAME);
         this.chart.Series[PRICEVARIABLE_SERIES_NAME].LegendText = PRICEVARIABLE_SERIES_NAME;
@@ -72,5 +72,5 @@
         this.chart.Series[PRICEVARIABLE_SERIES_NAME].Tag = Content;
 
-        IEnumerable<double> profit = OnlineProfitCalculator.GetProfits(Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.PriceVariable), Content.Signals, Content.ProblemData.TransactionCosts);
+        IEnumerable<double> profit = OnlineProfitCalculator.GetProfits(Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.PriceChangeVariable), Content.Signals, Content.ProblemData.TransactionCosts);
         IEnumerable<double> accumulatedProfits = GetAccumulatedPrices(profit);
         this.chart.Series.Add(ASSET_SERIES_NAME);
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/EcbProblemInstanceProvider.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/EcbProblemInstanceProvider.cs	(revision 9989)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/EcbProblemInstanceProvider.cs	(revision 9991)
@@ -78,5 +78,4 @@
       var tList = new List<DateTime>();
       var dList = new List<double>();
-      double prevValue = 0;
       values.Add(tList);
       values.Add(dList);
@@ -100,11 +99,5 @@
                 if (descriptor.Name.Contains(reader.GetAttribute("currency"))) {
                   reader.MoveToAttribute("rate");
-                  var curValue = reader.ReadContentAsDouble();
-                  if (!dList.Any())
-                    dList.Add(0.0);
-                  else {
-                    dList.Add(curValue - prevValue);
-                  }
-                  prevValue = curValue;
+                  dList.Add(reader.ReadContentAsDouble());
 
                   reader.MoveToElement();
@@ -117,7 +110,16 @@
           }
       }
-      var allowedInputVariables = new string[] { descriptor.Name };
-      var targetVariable = descriptor.Name;
-      var ds = new Dataset(new string[] { "Day", descriptor.Name }, values);
+      // entries in ECB XML are ordered most recent first => reverse lists
+      tList.Reverse();
+      dList.Reverse();
+      // calculate exchange rate deltas
+      var changes = new[] { 0.0 } // first element
+        .Concat(dList.Zip(dList.Skip(1), (prev, cur) => cur - prev)).ToList();
+      values.Add(changes);
+
+      var targetVariable = "d(" + descriptor.Name + ")";
+      var allowedInputVariables = new string[] { targetVariable };
+
+      var ds = new Dataset(new string[] { "Day", descriptor.Name, targetVariable }, values);
       return new ProblemData(ds, allowedInputVariables, targetVariable);
     }
Index: trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 9989)
+++ trunk/sources/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs	(revision 9991)
@@ -21,5 +21,7 @@
 
 using System;
+using System.ComponentModel;
 using System.Linq;
+using System.Threading.Tasks;
 using System.Windows.Forms;
 using HeuristicLab.MainForm;
@@ -88,14 +90,46 @@
 
     private void instancesComboBox_SelectionChangeCommitted(object sender, System.EventArgs e) {
+      toolTip.SetToolTip(instancesComboBox, String.Empty);
       if (instancesComboBox.SelectedIndex >= 0) {
         var descriptor = (IDataDescriptor)instancesComboBox.SelectedItem;
-        T instance = Content.LoadData(descriptor);
-        try {
-          GenericConsumer.Load(instance);
-        } catch (Exception ex) {
-          ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), ex);
-        }
-        toolTip.SetToolTip(instancesComboBox, descriptor.Description);
-      } else toolTip.SetToolTip(instancesComboBox, String.Empty);
+
+        IContentView activeView = (IContentView)MainFormManager.MainForm.ActiveView;
+        var mainForm = (MainForm.WindowsForms.MainForm)MainFormManager.MainForm;
+        // lock active view and show progress bar
+        mainForm.AddOperationProgressToContent(activeView.Content, "Loading problem instance.");
+        // continuation for removing the progess bar from the active view
+        Action<Task> removeProgressFromContent = (_) => mainForm.RemoveOperationProgressFromContent(activeView.Content);
+
+        // task structure:
+        // loadFromProvider
+        // |
+        // +-> on fault -> show error dialog -> remove progress bar
+        // |
+        // `-> success  -> loadToProblem
+        //                 |
+        //                 +-> on fault -> show error dialog -> remove progress bar
+        //                 |
+        //                 `-> success -> set tool tip -> remove progress bar
+        var loadFromProvider = new Task<T>(() => Content.LoadData(descriptor));
+
+        // success
+        var loadToProblem = loadFromProvider
+          .ContinueWith(task => GenericConsumer.Load(task.Result), TaskContinuationOptions.OnlyOnRanToCompletion);
+        // on error 
+        loadFromProvider
+          .ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("Could not load the problem instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
+          .ContinueWith(removeProgressFromContent);
+
+        // success
+        loadToProblem
+          .ContinueWith(task => toolTip.SetToolTip(instancesComboBox, descriptor.Description), TaskContinuationOptions.OnlyOnRanToCompletion)
+          .ContinueWith(removeProgressFromContent);
+        // on error
+        loadToProblem.ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
+        .ContinueWith(removeProgressFromContent);
+
+        // start async loading task
+        loadFromProvider.Start();
+      }
     }
   }
