public double[][] Predict(IEnumerable <StockHistory> input)
        {
            var inputs       = GetRawData(input, Parameters.InputColumns);
            var normalInputs = Normalizer.NormalizeInputs(inputs);
            var nnInputs     = normalInputs.Aggregate((x, y) => x.Concat(y).ToArray());

            var nnOutput = new double[Parameters.LeadWindowSize * Parameters.OutputColumns.Length];

            Network.Compute(nnInputs, nnOutput);

            var predictedOutput = new double[Parameters.LeadWindowSize][];

            for (int i = 0; i < Parameters.LeadWindowSize; i++)
            {
                var outputRow = new double[Parameters.OutputColumns.Length];
                Array.Copy(nnOutput, i * Parameters.OutputColumns.Length, outputRow, 0, Parameters.OutputColumns.Length);
                var rawOutputRow = Normalizer.DenormalizeOutput(outputRow);
                predictedOutput[i] = rawOutputRow;
            }

            return(predictedOutput);
        }