Function CTD_delta(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the delta of a cheapest to deliver option plus = 0.01 op = CTD(S1, S2, t, q1, q2, v1, v2, rho) op1 = CTD(S1 + plus, S2, t, q1, q2, v1, v2, rho) op2 = CTD(S1, S2 + plus, t, q1, q2, v1, v2, rho) del1 = (op1 - op) / plus del2 = (op2 - op) / plus If take_12 = 1 Then CTD_delta = del1 ElseIf take_12 = 2 Then CTD_delta = del2 Else: CTD_delta = "Falsh" End If End Function Function CTD_gamma(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the gamma of a cheapest to deliver option plus = 0.01 op1 = CTD_delta(S1, S2, t, q1, q2, v1, v2, rho, 1) op2 = CTD_delta(S1, S2, t, q1, q2, v1, v2, rho, 2) op11 = CTD_delta(S1 + plus, S2, t, q1, q2, v1, v2, rho, 1) op12 = CTD_delta(S1 + plus, S2, t, q1, q2, v1, v2, rho, 2) op21 = CTD_delta(S1, S2 + plus, t, q1, q2, v1, v2, rho, 1) op22 = CTD_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 CTD_gamma = gam11 ElseIf take_12 = 12 Then CTD_gamma = gam12 ElseIf take_12 = 21 Then CTD_gamma = gam21 ElseIf take_12 = 22 Then CTD_gamma = gam22 Else: CTD_gamma = "False" End If End Function Function CTD_vega(S1, S2, t, q1, q2, v1, v2, rho, take_12) ' Delivers the vega of a cheapest to deliver option plus = 0.01 op = CTD(S1, S2, t, q1, q2, v1, v2, rho) op1 = CTD(S1, S2, t, q1, q2, v1 + plus, v2, rho) op2 = CTD(S1, S2, t, q1, q2, v1, v2 + plus, rho) veg1 = (op1 - op) veg2 = (op2 - op) If take_12 = 1 Then CTD_vega = veg1 ElseIf take_12 = 2 Then CTD_vega = veg2 Else: CTD_vega = "False" End If End Function Function CTD_theta(S1, S2, t, q1, q2, v1, v2, rho) ' Delivers the theta of a cheapest to deliver option plus = 1 / 360 op = CTD(S1, S2, t, q1, q2, v1, v2, rho) op1 = CTD(S1, S2, t + plus, q1, q2, v1, v2, rho) CTD_theta = -op1 + op End Function