Exemple #1
0
        private void btnCalculateIV_Click(object sender, EventArgs e)
        {
            try
            {
                var blackNScholesCaculator = new BlackNScholesCaculator()
                {
                    DayLefts = DayLefts,

                    RiskFreeInterestRate = this.RiskFreeInterestRate,
                    StockPrice           = this.StockPrice,
                    Strike = this.StrikePrice
                };

                var iv = OptionType == EOptionType.Call
                    ? blackNScholesCaculator.GetCallIVBisections(OptionPrice)
                    : blackNScholesCaculator.GetPutIVBisections(OptionPrice);

                txtBNSBisections.Text = iv.ToString(CultureInfo.InvariantCulture);

                txtIterationCounter.Text = blackNScholesCaculator.IterationCounter.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #2
0
        /// <summary>
        /// Calculate the IV according the actual prices, UNL and option price.
        /// </summary>
        /// <param name="optionData"></param>
        /// <returns></returns>
        public double CalculateIVByOptionPrice(OptionData optionData)
        {
            var blackNScholesCaculator = new BlackNScholesCaculator()
            {
                DayLefts             = optionData.DaysLeft,
                Multiplier           = optionData.Multiplier,
                RiskFreeInterestRate = RiskFreeInterestRate,
                StockPrice           = optionData.UnderlinePrice,
                Strike = optionData.OptionContract.Strike,
            };
            double iv = 0;

            try
            {
                iv = optionData.OptionContract.OptionType == EOptionType.Call
                       ? blackNScholesCaculator.GetCallIVBisections(optionData.PriceOfOneOption)
                       : blackNScholesCaculator.GetPutIVBisections(optionData.PriceOfOneOption);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message + ": wrong calculation, ImpliedVolatility = 0 !!!!", ex);
            }

            return(iv);
        }