Code in VBA Excel, Visual Basic and C (for the file SABR.pdf) For VBA and Excel one does only need the public function, has to replace Sqrt by Sqr, define the function pow by Function pow(x, a) pow = x ^ a End Function and write SABR = ... instead of the VB return statement. * Code in Visual Basic ************************************** Imports System.Math Public Module CodeGenerationModule Public Function SABR( _ ByVal fwd As Double, _ ByVal K As Double, _ ByVal t As Double, _ ByVal alpha As Double, _ ByVal beta As Double, _ ByVal rho As Double, _ ByVal nu As Double) As Double Dim t1 As Double Dim t2 As Double Dim t5 As Double Dim t6 As Double Dim t9 As Double Dim t10 As Double Dim t16 As Double Dim t17 As Double Dim t18 As Double Dim t20 As Double Dim t25 As Double Dim t26 As Double Dim t29 As Double Dim t33 As Double Dim t41 As Double Dim t45 As Double Dim t54 As Double t1 = 0.1E1 - beta t2 = t1 * t1 t5 = Log(fwd / K) t6 = t5 * t5 t9 = t2 * t2 t10 = t6 * t6 t16 = rho * nu t17 = 0.1E1 / alpha t18 = K * fwd t20 = Pow(t18, t1 / 0.2E1) t25 = nu * nu t26 = alpha * alpha t29 = t20 * t20 t33 = Sqrt(0.1E1 - 0.2E1 * t16 * t17 * t20 * t5 + t25 / t26 * t29 * t6) t41 = Log((t33 + nu * t17 * t20 * t5 - rho) / (0.1E1 - rho)) t45 = Pow(t18, t1) t54 = rho * rho Return 0.1E1 / (0.1E1 + t2 * t6 / 0.24E2 + t9 * t10 / 0.1920E4) * nu * t5 / t41 * (0.1E1 + (t2 * t26 / t45 / 0.24E2 + alpha * beta * t16 / t20 / 0.4E1 + (0.2E1 - 0.3E1 * t54) * t25 / 0.24E2) * t) End Function End Module * Code in C ***************************************************** #include double SABR ( double fwd, double K, double t, double alpha, double beta, double rho, double nu) { double t1; double t2; double t5; double t6; double t9; double t10; double t16; double t17; double t18; double t20; double t25; double t26; double t29; double t33; double t41; double t45; double t54; t1 = 0.1e1 - beta; t2 = t1 * t1; t5 = log(fwd / K); t6 = t5 * t5; t9 = t2 * t2; t10 = t6 * t6; t16 = rho * nu; t17 = 0.1e1 / alpha; t18 = K * fwd; t20 = pow(t18, t1 / 0.2e1); t25 = nu * nu; t26 = alpha * alpha; t29 = t20 * t20; t33 = sqrt(0.1e1 - 0.2e1 * t16 * t17 * t20 * t5 + t25 / t26 * t29 * t6); t41 = log((t33 + nu * t17 * t20 * t5 - rho) / (0.1e1 - rho)); t45 = pow(t18, t1); t54 = rho * rho; return(0.1e1 / (0.1e1 + t2 * t6 / 0.24e2 + t9 * t10 / 0.1920e4) * nu * t5 / t41 * (0.1e1 + (t2 * t26 / t45 / 0.24e2 + alpha * beta * t16 / t20 / 0.4e1 + (0.2e1 - 0.3e1 * t54) * t25 / 0.24e2) * t)); } >