Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/CsvProblemInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/CsvProblemInstanceProvider.cs	(revision 9989)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/CsvProblemInstanceProvider.cs	(revision 9989)
@@ -0,0 +1,95 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Problems.Instances;
+using HeuristicLab.Problems.Instances.DataAnalysis;
+
+namespace HeuristicLab.Problems.DataAnalysis.Trading {
+  public class CsvProblemInstanceProvider : ProblemInstanceProvider<IProblemData> {
+    public override string Name {
+      get { return "CSV File"; }
+    }
+    public override string Description {
+      get {
+        return "Comma separated values file importer";
+      }
+    }
+    public override Uri WebLink {
+      get { return new Uri("http://dev.heuristiclab.com/trac/hl/core/wiki/UsersFAQ#DataAnalysisImportFileFormat"); }
+    }
+    public override string ReferencePublication {
+      get { return ""; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      return new List<IDataDescriptor>();
+    }
+    public override IProblemData LoadData(IDataDescriptor descriptor) {
+      throw new NotImplementedException();
+    }
+
+    public override bool CanImportData {
+      get { return true; }
+    }
+    public override IProblemData ImportData(string path) {
+      TableFileParser csvFileParser = new TableFileParser();
+      csvFileParser.Parse(path, csvFileParser.AreColumnNamesInFirstLine(path));
+
+      Dataset dataset = new Dataset(csvFileParser.VariableNames, csvFileParser.Values);
+      string targetVar = (from v in dataset.DoubleVariables
+                          where dataset.GetReadOnlyDoubleValues(v).Min() <= 0
+                          where dataset.GetReadOnlyDoubleValues(v).Max() >= 0
+                          select v).LastOrDefault();
+      if (targetVar == null) throw new ArgumentException("The target variable must contain changes (deltas) of the asset price over time.");
+
+      // turn off input variables that are constant in the training partition
+      var allowedInputVars = new List<string>();
+      var trainingIndizes = Enumerable.Range(0, (csvFileParser.Rows * 2) / 3);
+      if (trainingIndizes.Count() >= 2) {
+        foreach (var variableName in dataset.DoubleVariables) {
+          if (dataset.GetDoubleValues(variableName, trainingIndizes).Range() > 0 &&
+            variableName != targetVar)
+            allowedInputVars.Add(variableName);
+        }
+      } else {
+        allowedInputVars.AddRange(dataset.DoubleVariables.Where(x => !x.Equals(targetVar)));
+      }
+
+      IProblemData problemData = new ProblemData(dataset, allowedInputVars, targetVar);
+
+      var trainingPartEnd = trainingIndizes.Last();
+      problemData.TrainingPartition.Start = trainingIndizes.First();
+      problemData.TrainingPartition.End = trainingPartEnd;
+      problemData.TestPartition.Start = trainingPartEnd;
+      problemData.TestPartition.End = csvFileParser.Rows;
+
+      problemData.Name = Path.GetFileName(path);
+
+      return problemData;
+    }
+  }
+}
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 9989)
@@ -0,0 +1,125 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Net;
+using System.Xml;
+using HeuristicLab.Problems.Instances;
+using System.Linq;
+
+namespace HeuristicLab.Problems.DataAnalysis.Trading {
+  public class EcbProblemInstanceProvider : ProblemInstanceProvider<IProblemData> {
+    private class EcbDataDescriptor : IDataDescriptor {
+      public string Name { get; set; }
+      public string Description { get; set; }
+    }
+
+    public override string Name {
+      get { return "European Central Bank FX Data Provider"; }
+    }
+
+    public override string Description {
+      get { return "Downloads exchange rate data from the ECB"; }
+    }
+
+    public override Uri WebLink {
+      get { return new Uri("http://www.ecb.europa.eu/stats/eurofxref/"); }
+    }
+
+    public override string ReferencePublication {
+      get { return string.Empty; }
+    }
+
+    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
+      var l = new List<IDataDescriptor>();
+      try {
+        using (var client = new WebClient()) {
+          var s = client.OpenRead("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml");
+          if (s == null) return l;
+
+          using (var reader = new XmlTextReader(s)) {
+            reader.MoveToContent();
+            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+            do {
+              l.Add(new EcbDataDescriptor() { Name = "EUR / " + reader.GetAttribute("currency"), Description = string.Empty });
+            } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
+          }
+        }
+      }
+      catch (Exception) {
+      }
+      return l;
+    }
+
+    public override IProblemData LoadData(IDataDescriptor descriptor) {
+      var values = new List<IList>();
+      var tList = new List<DateTime>();
+      var dList = new List<double>();
+      double prevValue = 0;
+      values.Add(tList);
+      values.Add(dList);
+      using (var client = new WebClient()) {
+        var s = client.OpenRead("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml");
+        if (s != null)
+
+          using (var reader = new XmlTextReader(s)) {
+            reader.MoveToContent();
+            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+            // foreach time
+            do {
+              reader.MoveToAttribute("time");
+              tList.Add(reader.ReadContentAsDateTime());
+              reader.MoveToElement();
+              reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
+              // foreach currencys
+              do {
+                // find matching entry
+                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;
+
+                  reader.MoveToElement();
+                  // skip remaining siblings
+                  while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref")) ;
+                  break;
+                }
+              } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
+            } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
+          }
+      }
+      var allowedInputVariables = new string[] { descriptor.Name };
+      var targetVariable = descriptor.Name;
+      var ds = new Dataset(new string[] { "Day", descriptor.Name }, values);
+      return new ProblemData(ds, allowedInputVariables, targetVariable);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/HeuristicLab.Problems.DataAnalysis.Trading-3.4.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/HeuristicLab.Problems.DataAnalysis.Trading-3.4.csproj	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/HeuristicLab.Problems.DataAnalysis.Trading-3.4.csproj	(revision 9989)
@@ -103,4 +103,6 @@
     <Compile Include="Calculators\OnlineProfitCalculator.cs" />
     <Compile Include="Calculators\OnlineSharpeRatioCalculator.cs" />
+    <Compile Include="CsvProblemInstanceProvider.cs" />
+    <Compile Include="EcbProblemInstanceProvider.cs" />
     <Compile Include="Interfaces\IModel.cs" />
     <Compile Include="Interfaces\IProblem.cs" />
@@ -109,5 +111,4 @@
     <Compile Include="Plugin.cs" />
     <Compile Include="ProblemData.cs" />
-    <Compile Include="ProblemInstanceProvider.cs" />
     <Compile Include="Solution.cs" />
     <Compile Include="Symbolic\Interfaces\IEvaluator.cs" />
@@ -205,4 +206,8 @@
       <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
       <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances.DataAnalysis\3.3\HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj">
+      <Project>{94C7714E-29D4-4D6D-B213-2C18D627AB75}</Project>
+      <Name>HeuristicLab.Problems.Instances.DataAnalysis-3.3</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Interfaces/IProblemData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Interfaces/IProblemData.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Interfaces/IProblemData.cs	(revision 9989)
@@ -22,5 +22,5 @@
 namespace HeuristicLab.Problems.DataAnalysis.Trading {
   public interface IProblemData : IDataAnalysisProblemData {
-    string PriceVariable { get; }
+    string PriceChangeVariable { get; }
     double TransactionCosts { get; }
   }
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/ProblemData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/ProblemData.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/ProblemData.cs	(revision 9989)
@@ -33,5 +33,5 @@
   [Item("TradingProblemData", "Represents an item containing all data defining a trading problem.")]
   public sealed class ProblemData : DataAnalysisProblemData, IProblemData {
-    private const string PriceVariableParameterName = "PriceVariable";
+    private const string PriceChangeVariableParameterName = "PriceChangeVariable";
     private const string TransactionCostsParameterName = "TransactionCosts";
 
@@ -1589,20 +1589,20 @@
 
     static ProblemData() {
-      defaultDataset = new Dataset(new string[] { "AUD" }, audInUsdDiff);
+      defaultDataset = new Dataset(new string[] { "d(AUD/USD)/dt" }, audInUsdDiff);
       defaultDataset.Name = "AUD in USD";
-      defaultDataset.Description = "Price of Australian dollar in US dollar.";
-      defaultAllowedInputVariables = new List<string>() { "AUD" };
-      defaultPriceVariable = "AUD";
+      defaultDataset.Description = "Australian dollar in US dollar.";
+      defaultAllowedInputVariables = new List<string>() { "d(AUD/USD)/dt" };
+      defaultPriceVariable = "d(AUD/USD)/dt";
     }
     #endregion
 
-    public IConstrainedValueParameter<StringValue> PriceVariableParameter {
-      get { return (IConstrainedValueParameter<StringValue>)Parameters[PriceVariableParameterName]; }
+    public IConstrainedValueParameter<StringValue> PriceChangeVariableParameter {
+      get { return (IConstrainedValueParameter<StringValue>)Parameters[PriceChangeVariableParameterName]; }
     }
     public IValueParameter<DoubleValue> TransactionCostsParameter {
       get { return (IValueParameter<DoubleValue>)Parameters[TransactionCostsParameterName]; }
     }
-    public string PriceVariable {
-      get { return PriceVariableParameter.Value.Value; }
+    public string PriceChangeVariable {
+      get { return PriceChangeVariableParameter.Value.Value; }
     }
     public double TransactionCosts {
@@ -1630,11 +1630,14 @@
       : base(dataset, allowedInputVariables) {
       var variables = InputVariables.Select(x => x.AsReadOnly()).ToList();
-      Parameters.Add(new ConstrainedValueParameter<StringValue>(PriceVariableParameterName, new ItemSet<StringValue>(variables), variables.First(x => x.Value == targetVariable)));
+      Parameters.Add(new ConstrainedValueParameter<StringValue>(PriceChangeVariableParameterName, new ItemSet<StringValue>(variables), variables.First(x => x.Value == targetVariable)));
       Parameters.Add(new FixedValueParameter<DoubleValue>(TransactionCostsParameterName, "The absolute cost of on buy/sell transaction (assumed to be constant and independent of transaction volume)", new DoubleValue(0.0002)));
+
+      if (dataset.GetReadOnlyDoubleValues(targetVariable).Min() >= 0) throw new ArgumentException("The target variable must contain changes (deltas) of the asset price over time.");
+
       RegisterParameterEvents();
     }
 
     private void RegisterParameterEvents() {
-      PriceVariableParameter.ValueChanged += new EventHandler(PriceVariableParameter_ValueChanged);
+      PriceChangeVariableParameter.ValueChanged += new EventHandler(PriceVariableParameter_ValueChanged);
       TransactionCostsParameter.Value.ValueChanged += new EventHandler(TransactionCostsParameter_ValueChanged);
     }
@@ -1644,4 +1647,5 @@
     }
     private void PriceVariableParameter_ValueChanged(object sender, EventArgs e) {
+      if (Dataset.GetReadOnlyDoubleValues(PriceChangeVariable).Min() >= 0) throw new ArgumentException("The target variable must contain changes (deltas) of the asset price over time.");
       OnChanged();
     }
Index: unk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/ProblemInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/ProblemInstanceProvider.cs	(revision 9988)
+++ 	(revision )
@@ -1,126 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Net;
-using System.Xml;
-using HeuristicLab.Problems.Instances;
-using System.Linq;
-
-namespace HeuristicLab.Problems.DataAnalysis.Trading {
-
-  public class EcbProblemInstanceProvider : ProblemInstanceProvider<IProblemData> {
-    private class EcbDataDescriptor : IDataDescriptor {
-      public string Name { get; set; }
-      public string Description { get; set; }
-    }
-
-    public override string Name {
-      get { return "European Central Bank FX Data Provider"; }
-    }
-
-    public override string Description {
-      get { return "Downloads exchange rate data from the ECB"; }
-    }
-
-    public override Uri WebLink {
-      get { return new Uri("http://www.ecb.europa.eu/stats/eurofxref/"); }
-    }
-
-    public override string ReferencePublication {
-      get { return string.Empty; }
-    }
-
-    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
-      var l = new List<IDataDescriptor>();
-      try {
-        using (var client = new WebClient()) {
-          var s = client.OpenRead("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml");
-          if (s == null) return l;
-
-          using (var reader = new XmlTextReader(s)) {
-            reader.MoveToContent();
-            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-            do {
-              l.Add(new EcbDataDescriptor() { Name = "EUR / " + reader.GetAttribute("currency"), Description = string.Empty });
-            } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
-          }
-        }
-      }
-      catch (Exception) {
-      }
-      return l;
-    }
-
-    public override IProblemData LoadData(IDataDescriptor descriptor) {
-      var values = new List<IList>();
-      var tList = new List<DateTime>();
-      var dList = new List<double>();
-      double prevValue = 0;
-      values.Add(tList);
-      values.Add(dList);
-      using (var client = new WebClient()) {
-        var s = client.OpenRead("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml");
-        if (s != null)
-
-          using (var reader = new XmlTextReader(s)) {
-            reader.MoveToContent();
-            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-            reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-            // foreach time
-            do {
-              reader.MoveToAttribute("time");
-              tList.Add(reader.ReadContentAsDateTime());
-              reader.MoveToElement();
-              reader.ReadToDescendant("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
-              // foreach currencys
-              do {
-                // find matching entry
-                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;
-
-                  reader.MoveToElement();
-                  // skip remaining siblings
-                  while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref")) ;
-                  break;
-                }
-              } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
-            } while (reader.ReadToNextSibling("Cube", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"));
-          }
-      }
-      var allowedInputVariables = new string[] { descriptor.Name };
-      var targetVariable = descriptor.Name;
-      var ds = new Dataset(new string[] { "Day", descriptor.Name }, values);
-      return new ProblemData(ds, allowedInputVariables, targetVariable);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Solution.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Solution.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Solution.cs	(revision 9989)
@@ -86,7 +86,7 @@
     protected void CalculateTradingResults() {
       double[] trainingSignals = TrainingSignals.ToArray(); // cache values
-      IEnumerable<double> trainingReturns = ProblemData.Dataset.GetDoubleValues(ProblemData.PriceVariable, ProblemData.TrainingIndices);
+      IEnumerable<double> trainingReturns = ProblemData.Dataset.GetDoubleValues(ProblemData.PriceChangeVariable, ProblemData.TrainingIndices);
       double[] testSignals = TestSignals.ToArray(); // cache values
-      IEnumerable<double> testReturns = ProblemData.Dataset.GetDoubleValues(ProblemData.PriceVariable, ProblemData.TestIndices);
+      IEnumerable<double> testReturns = ProblemData.Dataset.GetDoubleValues(ProblemData.PriceChangeVariable, ProblemData.TestIndices);
 
       OnlineCalculatorError errorState;
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/ProfitEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/ProfitEvaluator.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/ProfitEvaluator.cs	(revision 9989)
@@ -59,5 +59,5 @@
     public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, IProblemData problemData, IEnumerable<int> rows) {
       IEnumerable<double> signals = GetSignals(interpreter, solution, problemData.Dataset, rows);
-      IEnumerable<double> returns = problemData.Dataset.GetDoubleValues(problemData.PriceVariable, rows);
+      IEnumerable<double> returns = problemData.Dataset.GetDoubleValues(problemData.PriceChangeVariable, rows);
       OnlineCalculatorError errorState;
       double profit = OnlineProfitCalculator.Calculate(returns, signals, problemData.TransactionCosts, out errorState);
Index: /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/SharpeRatioEvaluator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/SharpeRatioEvaluator.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Symbolic/SingleObjective/SharpeRatioEvaluator.cs	(revision 9989)
@@ -59,5 +59,5 @@
     public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, IProblemData problemData, IEnumerable<int> rows) {
       IEnumerable<double> signals = GetSignals(interpreter, solution, problemData.Dataset, rows);
-      IEnumerable<double> returns = problemData.Dataset.GetDoubleValues(problemData.PriceVariable, rows);
+      IEnumerable<double> returns = problemData.Dataset.GetDoubleValues(problemData.PriceChangeVariable, rows);
       OnlineCalculatorError errorState;
       double sharpRatio = OnlineSharpeRatioCalculator.Calculate(returns, signals, problemData.TransactionCosts, out errorState);
Index: /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs
===================================================================
--- /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 9988)
+++ /trunk/sources/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/CSV/RegressionCSVInstanceProvider.cs	(revision 9989)
@@ -62,5 +62,5 @@
       string targetVar = dataset.DoubleVariables.Last();
 
-      // turn of input variables that are constant in the training partition
+      // turn off input variables that are constant in the training partition
       var allowedInputVars = new List<string>();
       var trainingIndizes = Enumerable.Range(0, (csvFileParser.Rows * 2) / 3);
