Function outperf_delta_math(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the delta of an outperformance option v = Sqr(v1 ^ 2 + v2 ^ 2 - 2 * rho * v1 * v2) d1 = (Application.Ln(S2 / S1) + (q1 - q2 + 0.5 * v ^ 2) * t) / (v * Sqr(t)) d2 = d1 - v * Sqr(t) zwi = (S2 * Exp(-q2 * t) * phi(d1) - S1 * Exp(-q1 * t) * phi(d2)) / (v * Sqr(t)) If take_12 = 1 Then outperf_delta_math = -(zwi + S1 * Exp(-q1 * t) * Gauss(d2)) / S1 ElseIf take_12 = 2 Then outperf_delta_math = (zwi + S2 * Exp(-q2 * t) * Gauss(d1)) / S2 Else: outperf_delta_math = "False" End If End Function Function outperf_gamma_math(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the gamma of an outperformance option v = Sqr(v1 ^ 2 + v2 ^ 2 - 2 * rho * v1 * v2) d1 = (Application.Ln(S2 / S1) + (q1 - q2 + 0.5 * v ^ 2) * t) / (v * Sqr(t)) d2 = d1 - v * Sqr(t) g = (S1 * Exp(-q1 * t) * phi(d2) * (1 + d2 / (v * Sqr(t))) + S2 * Exp(-q2 * t) * phi(d1) * (1 - d1 / (v * Sqr(t)))) / (v * Sqr(t)) If take_12 = 11 Then outperf_gamma_math = g / (S1 ^ 2) ElseIf take_12 = 12 Then outperf_gamma_math = -g / (S1 * S2) ElseIf take_12 = 21 Then outperf_gamma_math = -g / (S1 * S2) ElseIf take_12 = 22 Then outperf_gamma_math = g / (S2 ^ 2) Else: outperf_gamma_math = "False" End If End Function Function outperf_delta(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the delta of an outperformance option plus = 0.01 op = outperf(S1, S2, t, q1, q2, v1, v2, rho) op1 = outperf(S1 + plus, S2, t, q1, q2, v1, v2, rho) op2 = outperf(S1, S2 + plus, t, q1, q2, v1, v2, rho) del1 = (op1 - op) / plus del2 = (op2 - op) / plus If take_12 = 1 Then outperf_delta = del1 ElseIf take_12 = 2 Then outperf_delta = del2 Else: outperf_delta = "False" End If End Function Function outperf_gamma(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the gamma of an outperformance option plus = 0.01 op1 = outperf_delta(S1, S2, t, q1, q2, v1, v2, rho, 1) op2 = outperf_delta(S1, S2, t, q1, q2, v1, v2, rho, 2) op11 = outperf_delta(S1 + plus, S2, t, q1, q2, v1, v2, rho, 1) op12 = outperf_delta(S1 + plus, S2, t, q1, q2, v1, v2, rho, 2) op21 = outperf_delta(S1, S2 + plus, t, q1, q2, v1, v2, rho, 1) op22 = outperf_delta(S1, S2 + plus, t, q1, q2, v1, v2, rho, 2) gam11 = (op11 - op1) / plus gam12 = (op12 - op2) / plus gam21 = (op21 - op1) / plus gam22 = (op22 - op2) / plus If take_12 = 11 Then outperf_gamma = gam11 ElseIf take_12 = 12 Then outperf_gamma = gam12 ElseIf take_12 = 21 Then outperf_gamma = gam21 ElseIf take_12 = 22 Then outperf_gamma = gam22 Else: outperf_gamma = "False" End If End Function Function outperf_vega(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the vega of an outperformance option plus = 0.01 op = outperf(S1, S2, t, q1, q2, v1, v2, rho) op1 = outperf(S1, S2, t, q1, q2, v1 + plus, v2, rho) op2 = outperf(S1, S2, t, q1, q2, v1, v2 + plus, rho) veg1 = (op1 - op) veg2 = (op2 - op) If take_12 = 1 Then outperf_vega = veg1 ElseIf take_12 = 2 Then outperf_vega = veg2 Else: outperf_vega = "False" End If End Function Function outperf_theta(S1, S2, t, q1, q2, v1, v2, rho) ' Delivers the theta of an outperformance option plus = 1 / 360 op = outperf(S1, S2, t, q1, q2, v1, v2, rho) op1 = outperf(S1, S2, t + plus, q1, q2, v1, v2, rho) outperf_theta = -op1 + op End Function