示例#1
0
 //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();
 }
示例#2
0
        //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;
        }