//method which loads the details of previously calibrated ARIMA/ARCH/GARCH models into modellist private void loadmodels(int position) { string interim1 = Fnames[position].Replace(".xlsx", ""); string interim2 = Tab[position].Replace("$", ""); string interim3 = Flocations[position].Replace(fnames[position], interim1 + interim2 + "Models.csv"); if (!File.Exists(interim3)) { return; } StreamReader sr = new StreamReader(interim3); string line; sr.ReadLine(); Modellist.Clear(); while ((line = sr.ReadLine()) != null) { bool subtractmean = false; char[] delimiters = new char[] { '\t', ' ' }; string[] details = line.Split(delimiters); string Transform = details[0]; double Shape = double.Parse(details[1]); double Scale = double.Parse(details[2]); string Model = details[3]; int P = int.Parse(details[4]); int Q = int.Parse(details[5]); int D = int.Parse(details[6]); double A = double.Parse(details[7]); double SS = double.Parse(details[8]); double Variance = double.Parse(details[9]); List <double> Parameters = new List <double>(); for (int i = 0; i < P + Q; i++) { Parameters.Add(double.Parse(details[10 + i])); } int archQ = int.Parse(details[10 + P + Q]); int archP = int.Parse(details[11 + P + Q]); double archAIC = double.Parse(details[12 + P + Q]); List <double> archParameters = new List <double>(); if (archQ == 0) { archParameters.Add(0); } else { //if we have an ARCH(Q) model then there are Q+1 parameters for (int i = 0; i < archP + (archQ + 1); i++) { archParameters.Add(double.Parse(details[13 + P + Q + i])); } } subtractmean = bool.Parse(details[13 + P + Q + archP + (archQ + 1)]); Modellist.Add(new model(Model, P, Q, D, A, 0, Parameters, new List <double> { 0.0 }, Variance, new List <double> { 0.0 }, SS, Transform, Shape, Scale, archQ, archP, archParameters, archAIC, subtractmean)); } }