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); } }