Ejemplo n.º 1
0
        private void CalculateData()
        {
            //read data: S,K,r,Sigma,T,Trials,steps
            label_bar.Text = "Reading data";
            inprogress(10);
            //S means underlying
            double S = Convert.ToDouble(TextBox_S.Text);
            //K means strike price
            double K = Convert.ToDouble(TextBox_K.Text);
            //r means the interest rate
            double r = Convert.ToDouble(TextBox_r.Text);
            //Sigma means volatility
            double Sigma = Convert.ToDouble(TextBox_Sigma.Text);
            //T means tenor
            double T = Convert.ToDouble(TextBox_T.Text);
            //Trials means the trials of Mento Carlo Simulations
            int Trials = Convert.ToInt32(TextBox_Sims.Text);
            //steps means the steps to calculate the option price
            int  steps          = Convert.ToInt32(TextBox_Steps.Text);
            bool Type           = Convert.ToBoolean(Radio_Call.Checked);
            bool AntVar         = Convert.ToBoolean(checkbox_AntVar.Checked);
            bool CV             = Convert.ToBoolean(checkbox_CV.Checked);
            bool Multithreading = Convert.ToBoolean(checkBox_MT.Checked);

            //European
            if (comboBox1.SelectedIndex == 0)
            {
                //store the data
                Option Euroption = new European(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, 0, 0, 0);
                //option price
                label_bar.Text = "Calculating Price";
                inprogress(30);
                TextBox_Price.Text = Convert.ToString(Euroption.OptionPrice()[0]);
                //delta
                label_bar.Text = "Calculating Delta";
                inprogress(40);
                TextBox_Delta.Text = Convert.ToString(Euroption.Delta());
                //gamma
                label_bar.Text = "Calculating Gamma";
                inprogress(50);
                TextBox_Gamma.Text = Convert.ToString(Euroption.Gamma());
                //vega
                label_bar.Text = "Calculating Vega";
                inprogress(60);
                TextBox_Vega.Text = Convert.ToString(Euroption.Vega());
                //theta
                label_bar.Text = "Calculating Theta";
                inprogress(70);
                TextBox_Theta.Text = Convert.ToString(Euroption.Theta());
                //rho
                label_bar.Text = "Calculating Rho";
                inprogress(80);
                TextBox_Rho.Text = Convert.ToString(Euroption.Rho());
                //standard error
                label_bar.Text = "Calculating Standard Error";
                inprogress(90);
                TextBox_Std.Text   = Convert.ToString(Euroption.OptionPrice()[1]);
                TextBox_Cores.Text = Convert.ToString(Euroption.core_num());
                label_bar.Text     = "Done.";
                inprogress(100);
            }
            //Asian
            if (comboBox1.SelectedIndex == 1)
            {
                //store the data
                Option AsianOption = new Asian(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, 0, 0, 0);
                //option price
                label_bar.Text = "Calculating Price";
                inprogress(30);
                TextBox_Price.Text = Convert.ToString(AsianOption.OptionPrice()[0]);
                //delta
                label_bar.Text = "Calculating Delta";
                inprogress(40);
                TextBox_Delta.Text = Convert.ToString(AsianOption.Delta());
                //gamma
                label_bar.Text = "Calculating Gamma";
                inprogress(50);
                TextBox_Gamma.Text = Convert.ToString(AsianOption.Gamma());
                //vega
                label_bar.Text = "Calculating Vega";
                inprogress(60);
                TextBox_Vega.Text = Convert.ToString(AsianOption.Vega());
                //theta
                label_bar.Text = "Calculating Theta";
                inprogress(70);
                TextBox_Theta.Text = Convert.ToString(AsianOption.Theta());
                //rho
                label_bar.Text = "Calculating Rho";
                inprogress(80);
                TextBox_Rho.Text = Convert.ToString(AsianOption.Rho());
                //standard error
                label_bar.Text = "Calculating Standard Error";
                inprogress(90);
                TextBox_Std.Text   = Convert.ToString(AsianOption.OptionPrice()[1]);
                TextBox_Cores.Text = Convert.ToString(AsianOption.core_num());
                label_bar.Text     = "Done.";
                inprogress(100);
            }
            //Digital
            if (comboBox1.SelectedIndex == 2)
            {
                //store the data
                if (TextBox_Rebate.Text == string.Empty)
                {
                    label_bar.Text = "Missing some inputs";
                }
                else
                {
                    double Rebate        = Convert.ToDouble(TextBox_Rebate.Text);
                    Option DigitalOption = new Digital(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, Rebate, 0, 0);
                    //option price
                    label_bar.Text = "Calculating Price";
                    inprogress(30);
                    TextBox_Price.Text = Convert.ToString(DigitalOption.OptionPrice()[0]);
                    //delta
                    label_bar.Text = "Calculating Delta";
                    inprogress(40);
                    TextBox_Delta.Text = Convert.ToString(DigitalOption.Delta());
                    //gamma
                    label_bar.Text = "Calculating Gamma";
                    inprogress(50);
                    TextBox_Gamma.Text = Convert.ToString(DigitalOption.Gamma());
                    //vega
                    label_bar.Text = "Calculating Vega";
                    inprogress(60);
                    TextBox_Vega.Text = Convert.ToString(DigitalOption.Vega());
                    //theta
                    label_bar.Text = "Calculating Theta";
                    inprogress(70);
                    TextBox_Theta.Text = Convert.ToString(DigitalOption.Theta());
                    //rho
                    label_bar.Text = "Calculating Rho";
                    inprogress(80);
                    TextBox_Rho.Text = Convert.ToString(DigitalOption.Rho());
                    //standard error
                    label_bar.Text = "Calculating Standard Error";
                    inprogress(90);
                    TextBox_Std.Text   = Convert.ToString(DigitalOption.OptionPrice()[1]);
                    TextBox_Cores.Text = Convert.ToString(DigitalOption.core_num());
                    label_bar.Text     = "Done.";
                    inprogress(100);
                }
            }
            //Barrier
            if (comboBox1.SelectedIndex == 3)
            {
                //store the data
                if (TextBox_Barrier.Text == string.Empty)
                {
                    label_bar.Text = "Missing some inputs";
                }
                else
                {
                    double Barrier       = Convert.ToDouble(TextBox_Barrier.Text);
                    int    barrtype      = Convert.ToInt32(comboBox2.SelectedIndex);
                    Option BarrierOption = new Barrier(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, 0, Barrier, barrtype);
                    //option price
                    label_bar.Text = "Calculating Price";
                    inprogress(30);
                    TextBox_Price.Text = Convert.ToString(BarrierOption.OptionPrice()[0]);
                    //delta
                    label_bar.Text = "Calculating Delta";
                    inprogress(40);
                    TextBox_Delta.Text = Convert.ToString(BarrierOption.Delta());
                    //gamma
                    label_bar.Text = "Calculating Gamma";
                    inprogress(50);
                    TextBox_Gamma.Text = Convert.ToString(BarrierOption.Gamma());
                    //vega
                    label_bar.Text = "Calculating Vega";
                    inprogress(60);
                    TextBox_Vega.Text = Convert.ToString(BarrierOption.Vega());
                    //theta
                    label_bar.Text = "Calculating Theta";
                    inprogress(70);
                    TextBox_Theta.Text = Convert.ToString(BarrierOption.Theta());
                    //rho
                    label_bar.Text = "Calculating Rho";
                    inprogress(80);
                    TextBox_Rho.Text = Convert.ToString(BarrierOption.Rho());
                    //standard error
                    label_bar.Text = "Calculating Standard Error";
                    inprogress(90);
                    TextBox_Std.Text   = Convert.ToString(BarrierOption.OptionPrice()[1]);
                    TextBox_Cores.Text = Convert.ToString(BarrierOption.core_num());
                    label_bar.Text     = "Done.";
                    inprogress(100);
                }
            }
            //Lookback
            if (comboBox1.SelectedIndex == 4)
            {
                //store the data
                Option LookbackOption = new Lookback(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, 0, 0, 0);
                //option price
                label_bar.Text = "Calculating Price";
                inprogress(30);
                TextBox_Price.Text = Convert.ToString(LookbackOption.OptionPrice()[0]);
                //delta
                label_bar.Text = "Calculating Delta";
                inprogress(40);
                TextBox_Delta.Text = Convert.ToString(LookbackOption.Delta());
                //gamma
                label_bar.Text = "Calculating Gamma";
                inprogress(50);
                TextBox_Gamma.Text = Convert.ToString(LookbackOption.Gamma());
                //vega
                label_bar.Text = "Calculating Vega";
                inprogress(60);
                TextBox_Vega.Text = Convert.ToString(LookbackOption.Vega());
                //theta
                label_bar.Text = "Calculating Theta";
                inprogress(70);
                TextBox_Theta.Text = Convert.ToString(LookbackOption.Theta());
                //rho
                label_bar.Text = "Calculating Rho";
                inprogress(80);
                TextBox_Rho.Text = Convert.ToString(LookbackOption.Rho());
                //standard error
                label_bar.Text = "Calculating Standard Error";
                inprogress(90);
                TextBox_Std.Text   = Convert.ToString(LookbackOption.OptionPrice()[1]);
                TextBox_Cores.Text = Convert.ToString(LookbackOption.core_num());
                label_bar.Text     = "Done.";
                inprogress(100);
            }
            //Range
            if (comboBox1.SelectedIndex == 5)
            {
                //store the data
                Option RangeOption = new Range(S, K, r, Sigma, T, Trials, steps, Type, AntVar, CV, Multithreading, 0, 0, 0);
                //option price
                label_bar.Text = "Calculating Price";
                inprogress(30);
                TextBox_Price.Text = Convert.ToString(RangeOption.OptionPrice()[0]);
                //delta
                label_bar.Text = "Calculating Delta";
                inprogress(40);
                TextBox_Delta.Text = Convert.ToString(RangeOption.Delta());
                //gamma
                label_bar.Text = "Calculating Gamma";
                inprogress(50);
                TextBox_Gamma.Text = Convert.ToString(RangeOption.Gamma());
                //vega
                label_bar.Text = "Calculating Vega";
                inprogress(60);
                TextBox_Vega.Text = Convert.ToString(RangeOption.Vega());
                //theta
                label_bar.Text = "Calculating Theta";
                inprogress(70);
                TextBox_Theta.Text = Convert.ToString(RangeOption.Theta());
                //rho
                label_bar.Text = "Calculating Rho";
                inprogress(80);
                TextBox_Rho.Text = Convert.ToString(RangeOption.Rho());
                //standard error
                label_bar.Text = "Calculating Standard Error";
                inprogress(90);
                TextBox_Std.Text   = Convert.ToString(RangeOption.OptionPrice()[1]);
                TextBox_Cores.Text = Convert.ToString(RangeOption.core_num());
                label_bar.Text     = "Done.";
                inprogress(100);
            }
        }