public void testFuturesConvexityBias() { //BOOST_MESSAGE("Testing Hull-White futures convexity bias..."); // G. Kirikos, D. Novak, "Convexity Conundrums", Risk Magazine, March 1997 double futureQuote = 94.0; double a = 0.03; double sigma = 0.015; double t = 5.0; double T = 5.25; double expectedForward = 0.0573037; double tolerance = 0.0000001; double futureImpliedRate = (100.0 - futureQuote) / 100.0; double calculatedForward = futureImpliedRate - HullWhite.convexityBias(futureQuote, t, T, sigma, a); double error = Math.Abs(calculatedForward - expectedForward); if (error > tolerance) { Assert.Fail("Failed to reproduce convexity bias:" + "\ncalculated: " + calculatedForward + "\n expected: " + expectedForward //+ QL_SCIENTIFIC + "\n error: " + error + "\n tolerance: " + tolerance); } }