public void ThetaFacts() { var t = 1.0; var k = 100; var f = 100; var vol = 0.32; var rf = 0.05; var cp = OptionType.P; //theta closely matches numerical estimate var bumpT = 1e-10; var PV1 = BlackFunctions.BlackPV(f, k, rf, t, vol, cp); var PV2 = BlackFunctions.BlackPV(f, k, rf, t - bumpT, vol, cp); var thetaEst = (PV2 - PV1) / bumpT; var theta = BlackFunctions.BlackTheta(f, k, rf, t, vol, cp); Assert.Equal(thetaEst, theta, 3); //theta closely matches numerical estimate cp = OptionType.C; PV1 = BlackFunctions.BlackPV(f, k, rf, t, vol, cp); PV2 = BlackFunctions.BlackPV(f, k, rf, t - bumpT, vol, cp); thetaEst = (PV2 - PV1) / bumpT; theta = BlackFunctions.BlackTheta(f, k, rf, t, vol, cp); Assert.Equal(thetaEst, theta, 3); }