// Calculate difference between observed and model prices
        public double CalcMeanSquareErrorBetweenModelAndMarket(VasicekModel m)
        {
            double meanSqErr = 0;

            foreach (ZCBCallOptionMarketData option in marketOptionsList)
            {
                double bondMaturity   = option.bondMaturity;
                double optionExercise = option.optionExercise;
                double strike         = option.strike;
                double modelPrice     = m.PriceZCBCall(optionExercise, strike, bondMaturity);

                double difference = modelPrice - option.marketMidPrice;
                meanSqErr += difference * difference;
            }
            return(meanSqErr);
        }
Example #2
0
        public static double VasicekZCBCallPrice(double bondMaturity, double optionExercise, double strike, double r0, double k, double theta, double sigma)
        {
            VasicekModel m = new VasicekModel(r0, k, theta, sigma);

            return(m.PriceZCBCall(optionExercise, strike, bondMaturity));
        }