{"id":1931,"date":"2014-07-08T08:53:35","date_gmt":"2014-07-08T06:53:35","guid":{"rendered":"http:\/\/www.blue-bears.com\/blog\/?p=1931"},"modified":"2014-07-08T08:56:29","modified_gmt":"2014-07-08T06:56:29","slug":"vba-formule-option-greeks-black-scholes","status":"publish","type":"post","link":"http:\/\/www.blue-bears.com\/blog\/?p=1931","title":{"rendered":"VBA Formule Option Greeks Black &#038; Scholes"},"content":{"rendered":"<p>Option Explicit<br \/>\nDim DrSup\u00a0\u00a0 &lsquo;Cours Support<br \/>\nDim PE\u00a0\u00a0\u00a0\u00a0\u00a0 &lsquo;Prix Exercice<br \/>\nDim Tx\u00a0\u00a0\u00a0\u00a0\u00a0 &lsquo;Taux courts<br \/>\nDim Tps\u00a0\u00a0\u00a0\u00a0 &lsquo;Temps restant avant l&rsquo;\u00e9ch\u00e9ance en ann\u00e9es<br \/>\nDim Vol\u00a0\u00a0\u00a0\u00a0 &lsquo;Volatilit\u00e9 annualis\u00e9e en %<!--more--><\/p>\n<p>Dim D1<br \/>\nDim D2<\/p>\n<p>Dim Temp1<br \/>\nDim Temp2<br \/>\nDim Temp3<\/p>\n<p>&nbsp;<\/p>\n<p>\u00a0<br \/>\n&lsquo;Calcul Coef d2<br \/>\nFunction Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_d1 = (1 \/ (Vol * Sqr(Tps))) * Log(((DrSup * Exp(-Div * Tps)) \/ (PE * Exp(-Tx * Tps)))) + 0.5 * Vol * Sqr(Tps)<br \/>\nEnd Function<br \/>\n&lsquo;Calcul coef d2<br \/>\nFunction Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\nGreek_d2 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol) &#8211; Vol * Sqr(Tps)<\/p>\n<p>End Function<br \/>\n&lsquo;Calcul CALL *****************************************************************<br \/>\nFunction OptionCall(DrSup, PE, Tx, Div, Tps, Vol)<\/p>\n<p>D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\nD2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<\/p>\n<p>OptionCall = DrSup * Exp(-Div * Tps) * WorksheetFunction.NormSDist(D1) &#8211; PE * Exp(-Tx * Tps) * WorksheetFunction.NormSDist(D2)<br \/>\nEnd Function<br \/>\n&lsquo;Calcul PUT *****************************************************************<br \/>\nFunction OptionPut(DrSup, PE, Tx, Div, Tps, Vol)<\/p>\n<p>D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\nD2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<\/p>\n<p>OptionPut = DrSup * Exp(-Div * Tps) * (WorksheetFunction.NormSDist(D1) &#8211; 1) &#8211; PE * Exp(-Tx * Tps) * (WorksheetFunction.NormSDist(D2) &#8211; 1)<br \/>\nEnd Function<br \/>\n&lsquo;DELTA CALL *****************************************************************<br \/>\nFunction Greek_Delta_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Delta_Call = Exp(-Div * Tps) * WorksheetFunction.NormSDist(D1)<br \/>\nEnd Function<br \/>\n&lsquo;DELTA PUT *****************************************************************<br \/>\nFunction Greek_Delta_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Delta_Put = Exp(-Div * Tps) * (WorksheetFunction.NormSDist(D1) &#8211; 1)<br \/>\nEnd Function<br \/>\n&lsquo;GAMMA CALL &amp; PUT *****************************************************************<br \/>\nFunction Greek_Gamma_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Gamma_Call = Exp(-Div * Tps) * WorksheetFunction.NormDist(D1, 0, 1, False)<br \/>\n\u00a0\u00a0\u00a0 Greek_Gamma_Call = Greek_Gamma_Call \/ (DrSup * Vol * Sqr(Tps))<br \/>\nEnd Function<br \/>\nFunction Greek_Gamma_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Gamma_Call = Exp(-Div * Tps) * WorksheetFunction.NormDist(D1, 0, 1, False)<br \/>\n\u00a0\u00a0\u00a0 Greek_Gamma_Call = Greek_Gamma_Call \/ (DrSup * Vol * Sqr(Tps))<br \/>\nEnd Function<br \/>\n&lsquo;VEGA CALL &amp; PUT *****************************************************************<br \/>\nFunction Greek_Vega_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Vega_Call = DrSup * Exp(-Div * Tps) * Sqr(Tps) * WorksheetFunction.NormDist(D1, 0, 1, False)<br \/>\n\u00a0\u00a0\u00a0 Greek_Vega_Call = Greek_Vega_Call \/ 100<br \/>\nEnd Function<br \/>\nFunction Greek_Vega_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Vega_Call = DrSup * Exp(-Div * Tps) * Sqr(Tps) * WorksheetFunction.NormDist(D1, 0, 1, False)<br \/>\n\u00a0\u00a0\u00a0 Greek_Vega_Call = Greek_Vega_Call \/ 100<br \/>\nEnd Function<br \/>\n&lsquo;RHO CALL *****************************************************************<br \/>\nFunction Greek_Rho_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Call = PE * Exp(-Tx * Tps) * Tps * WorksheetFunction.NormSDist(D2)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Call = Greek_Rho_Call \/ 100<br \/>\nEnd Function<br \/>\n&lsquo;RHO PUT *****************************************************************<br \/>\nFunction Greek_Rho_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Put = -PE * Exp(-Tx * Tps) * Tps * WorksheetFunction.NormSDist(-D2)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Put = Greek_Rho_Put \/ 100<br \/>\nEnd Function<br \/>\n&lsquo;RHO_Div CALL *****************************************************************<br \/>\nFunction Greek_Rho_Div_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Div_Call = -DrSup * Exp(-Div * Tps) * Tps * WorksheetFunction.NormSDist(D1)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Div_Call = Greek_Rho_Div_Call \/ 100<br \/>\nEnd Function<br \/>\n&lsquo;RHO_Div PUT *****************************************************************<br \/>\nFunction Greek_Rho_Div_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Div_Put = DrSup * Exp(-Div * Tps) * Tps * WorksheetFunction.NormSDist(-D1)<br \/>\n\u00a0\u00a0\u00a0 Greek_Rho_Div_Put = Greek_Rho_Div_Put \/ 100<br \/>\nEnd Function<br \/>\n&lsquo;THETA CALL *****************************************************************<br \/>\nFunction Greek_Theta_Call(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0<br \/>\n\u00a0\u00a0\u00a0 Temp1 = -DrSup * Exp(-Div * Tps) * Vol * WorksheetFunction.NormDist(D1, 0, 1, False) \/ (2 * Sqr(Tps))<br \/>\n\u00a0\u00a0\u00a0 Temp2 = Div * DrSup * Exp(-Div * Tps) * WorksheetFunction.NormSDist(D1)<br \/>\n\u00a0\u00a0\u00a0 Temp3 = Tx * PE * Exp(-Tx * Tps) * WorksheetFunction.NormSDist(D2)<br \/>\n\u00a0\u00a0\u00a0 Greek_Theta_Call = Temp1 + Temp2 &#8211; Temp3<br \/>\n\u00a0\u00a0\u00a0 Greek_Theta_Call = Greek_Theta_Call \/ 365.25<br \/>\nEnd Function<br \/>\n&lsquo;THETA PUT *****************************************************************<br \/>\nFunction Greek_Theta_Put(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D1 = Greek_d1(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0 D2 = Greek_d2(DrSup, PE, Tx, Div, Tps, Vol)<br \/>\n\u00a0\u00a0\u00a0<br \/>\n\u00a0\u00a0\u00a0 Temp1 = -DrSup * Exp(-Div * Tps) * Vol * WorksheetFunction.NormDist(D1, 0, 1, False) \/ (2 * Sqr(Tps))<br \/>\n\u00a0\u00a0\u00a0 Temp2 = Div * DrSup * Exp(-Div * Tps) * WorksheetFunction.NormSDist(D1)<br \/>\n\u00a0\u00a0\u00a0 Temp3 = Tx * PE * Exp(-Tx * Tps) * WorksheetFunction.NormSDist(D2)<br \/>\n\u00a0\u00a0\u00a0 Greek_Theta_Put = Temp1 &#8211; Temp2 + Temp3<br \/>\n\u00a0\u00a0\u00a0 Greek_Theta_Put = Greek_Theta_Put \/ 365.25<br \/>\nEnd Function<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Option Explicit Dim DrSup\u00a0\u00a0 &lsquo;Cours Support Dim PE\u00a0\u00a0\u00a0\u00a0\u00a0 &lsquo;Prix Exercice Dim Tx\u00a0\u00a0\u00a0\u00a0\u00a0 &lsquo;Taux courts Dim Tps\u00a0\u00a0\u00a0\u00a0 &lsquo;Temps restant avant l&rsquo;\u00e9ch\u00e9ance en ann\u00e9es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,17,7],"tags":[],"class_list":["post-1931","post","type-post","status-publish","format-standard","hentry","category-finance","category-informatique","category-valo-actions"],"_links":{"self":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1931"}],"version-history":[{"count":3,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1931\/revisions"}],"predecessor-version":[{"id":1934,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1931\/revisions\/1934"}],"wp:attachment":[{"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1931"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.blue-bears.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}