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