//this method hides buttons, plots etc. private void hide() { ARCHdgv.Hide(); ARCHmodels.Hide(); ARCHmodelsdgv.Hide(); ARCHwhitenoise.Hide(); ARCHarimadgv.Hide(); ARCHarchdgv.Hide(); ARCHsavebt.Hide(); ARCHarimalbl.Hide(); label1.Hide(); label2.Hide(); label3.Hide(); }
//On clicking the Fit ARCH and GARCH button this method is called //it will automatically fit a number of ARCH and GARCH models to the data private void ARCHmodels_Click(object sender, EventArgs e) { System.Windows.Forms.Cursor old = this.Cursor; this.Cursor = Cursors.AppStarting; archModellist.Clear(); int mposition = 0; mposition = ARCHdgv.SelectedRows[0].Index; int nar = 0; int nma = 0; int nd = 0; bool subtmean = false; List <double> arimaestimates = new List <double>(); nar = Modellist[mposition].P; nma = Modellist[mposition].Q; nd = Modellist[mposition].D; subtmean = Modellist[mposition].Subtractmean; List <double> data = new List <double>(); //setting up the data.......could be done in a smarter way if (nd > 0) { P.DifferencedData.Clear(); this.P.Diff = nd; P.difference(); foreach (double dd in P.DifferencedData) { data.Add(dd); } } else { if (subtmean == true) { double aver = P.avg(P.D); List <double> tempdata = new List <double>(); foreach (double dd in P.D) { tempdata.Add(dd - P.avg(P.D)); } P.D.Clear(); foreach (double dd in tempdata) { P.D.Add(dd); } } foreach (double dd in P.D) { data.Add(dd); } } //fit the ARCH models for (int i = 1; i < 6; i++) { List <double> archestandaic = P.archML(data, Modellist[mposition].Parameters, nar, nma, i); List <double> archparamest = new List <double>(); for (int l = 0; l < i + 1; l++) { archparamest.Add(archestandaic[l]); } List <double> resid = P.archresiduals(data, Modellist[mposition].Parameters, nar, nma, i, archparamest); List <double> acfresid = P.sampleautocorrelation(resid, 100); if ((Math.Abs(archestandaic[i + 1]) > 1000000) || (double.IsNaN(archestandaic[i + 1]))) { continue; } else { archModellist.Add(new model("ML", nar, nma, nd, Modellist[mposition].Aic, Modellist[mposition].Bic, Modellist[mposition].Parameters, new List <double> { 0.0 }, Modellist[mposition].Variance, new List <double> { 0.0 }, Modellist[mposition].Sumsquaredresiduals, Modellist[mposition].Transformtype, Modellist[mposition].Transformshape, Modellist[mposition].Transformscale, i, 0, archparamest, archestandaic[i + 1], resid, acfresid, Modellist[mposition].Subtractmean)); } } //fit the GARCH models for (int i = 1; i < 3; i++) { for (int j = 1; j < 3; j++) { List <double> garchestandaic = P.garchML(data, Modellist[mposition].Parameters, nar, nma, i, j); List <double> garchparamest = new List <double>(); for (int l = 0; l < i + j + 1; l++) { garchparamest.Add(garchestandaic[l]); } List <double> resid = P.garchresiduals(data, Modellist[mposition].Parameters, nar, nma, i, j, garchparamest); List <double> acfresid = P.sampleautocorrelation(resid, 100); if ((Math.Abs(garchestandaic[i + j + 1]) > 1000000) || (double.IsNaN(garchestandaic[i + j + 1]))) { continue; } else { archModellist.Add(new model("ML", nar, nma, nd, Modellist[mposition].Aic, Modellist[mposition].Bic, Modellist[mposition].Parameters, new List <double> { 0.0 }, Modellist[mposition].Variance, new List <double> { 0.0 }, Modellist[mposition].Sumsquaredresiduals, Modellist[mposition].Transformtype, Modellist[mposition].Transformshape, Modellist[mposition].Transformscale, i, j, garchparamest, garchestandaic[i + j + 1], resid, acfresid, Modellist[mposition].Subtractmean)); } } } ARCHmodelsdgv.Show(); label3.Show(); //populating the datagridview int x = ARCHmodelsdgv.ColumnCount; bs3.DataSource = archModellist; ARCHmodelsdgv.DataSource = bs3; ARCHmodelsdgv.AllowUserToAddRows = false; ARCHmodelsdgv.AutoGenerateColumns = false; if (x == 0) { DataGridViewColumn col1 = new DataGridViewTextBoxColumn(); col1.DataPropertyName = "archQ"; col1.HeaderText = "GARCH (Q)"; col1.Name = "Blah"; col1.Width = 90; ARCHmodelsdgv.Columns.Add(col1); DataGridViewColumn col2 = new DataGridViewTextBoxColumn(); col2.DataPropertyName = "archP"; col2.HeaderText = "GARCH (P)"; col2.Name = "Blah"; col2.Width = 90; ARCHmodelsdgv.Columns.Add(col2); DataGridViewColumn col3 = new DataGridViewTextBoxColumn(); col3.DataPropertyName = "archAic"; col3.HeaderText = "Arch AIC"; col3.Name = "Blah"; col3.Width = 90; col3.DefaultCellStyle.Format = "n2"; ARCHmodelsdgv.Columns.Add(col3); ARCHmodelsdgv.Columns["P"].Visible = false; ARCHmodelsdgv.Columns["Q"].Visible = false; ARCHmodelsdgv.Columns["Aic"].Visible = false; ARCHmodelsdgv.Columns["Bic"].Visible = false; ARCHmodelsdgv.Columns["Type"].Visible = false; ARCHmodelsdgv.Columns["Variance"].Visible = false; ARCHmodelsdgv.Columns["D"].Visible = false; ARCHmodelsdgv.Columns["Sumsquaredresiduals"].Visible = false; ARCHmodelsdgv.Columns["Transformtype"].Visible = false; ARCHmodelsdgv.Columns["Transformshape"].Visible = false; ARCHmodelsdgv.Columns["Transformscale"].Visible = false; ARCHmodelsdgv.Columns["archP"].Visible = false; ARCHmodelsdgv.Columns["archQ"].Visible = false; ARCHmodelsdgv.Columns["archAic"].Visible = false; ARCHmodelsdgv.Columns["Subtractmean"].Visible = false; } this.Cursor = old; }