{"categories":["FX"],"contentHtml":"<h3>Week 7 — 10 March 2025</h3><p>The syllabus records “Black-Scholes shortcomings: smile effects.” The source export contains the volatility-surface helper below and explicitly labels it “Vol Surface Functions — Not to be completed by Student.” I am preserving that status rather than presenting it as a finished calibration method.</p><h4>Risk-reversal and fly interpolation</h4><pre><code>' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- Vol Surface Functions - Not to be completed by Student ---------------------\nFunction RRFlyQuadraticFit(lowStrike As Double, _\n                    atmFStrike As Double, _\n                    highStrike As Double, _\n                    ATMFVol As Double, _\n                    RRvol As Double, _\n                    FlyVol As Double, _\n                    XpointATMF As Double, _\n                    XPoint As Double)\n    Dim VollowStrike As Double\n    Dim VolATF As Double\n    Dim VolHighStrike As Double\n    Dim lowStrikeRelative As Double\n    Dim highStrikeRelative As Double\n    Dim XPointRelative As Double\n    Dim zero As Double\n    'If a crazy strike\n    If Abs(XPoint) &gt; atmFStrike * 1000 Or Abs(XPoint) &lt; atmFStrike / 1000 Then\n     RRFlyQuadraticFit = 0#\n    'If not a crazy strike\n    Else\n     'Make everything relative to ATMF\n     lowStrikeRelative = lowStrike - atmFStrike\n     highStrikeRelative = highStrike - atmFStrike\n     XPointRelative = XPoint - XpointATMF\n     zero = 0#\n     ' Low Strike vol\n      VollowStrike = ATMFVol - RRvol / 2 + FlyVol\n      VolATF = ATMFVol\n       VolHighStrike = ATMFVol + RRvol / 2 + FlyVol\n        RRFlyQuadraticFit = QuadraticFit(lowStrikeRelative, _\n                                         VollowStrike, _\n                                         zero, _\n                                         VolATF, _\n                                         highStrikeRelative, _\n                                         VolHighStrike, _\n                                         XPointRelative)\n    End If\nEnd Function\nFunction QuadraticFit(X1 As Double, _\n                    Y1 As Double, _\n                    X2 As Double, _\n                    Y2 As Double, _\n                    X3 As Double, _\n                    Y3 As Double, _\n                    XPoint As Double)\n    Dim Acoef As Double\n    Dim Bcoef As Double\n    Dim Ccoef As Double\n    Acoef = ((Y2 - Y1) * (X1 - X3) + _\n         (Y3 - Y1) * (X2 - X1)) / _\n        ((X1 - X3) * (X2 ^ 2 - X1 ^ 2) + _\n         (X2 - X1) * (X3 ^ 2 - X1 ^ 2))\n    Bcoef = ((Y2 - Y1) - Acoef * (X2 ^ 2 - X1 ^ 2)) _\n        / (X2 - X1)\n    Ccoef = Y1 - Acoef * X1 ^ 2 - Bcoef * X1\n    QuadraticFit = Acoef * XPoint ^ 2 + Bcoef * XPoint + Ccoef\nEnd Function\n'------------------- AUXILIARY FUNCTIONS --------------------</code></pre><h4>Auxiliary normal terms</h4><pre><code>' D1 calculation\nFunction dOne(S, X, T, r, v)\n    dOne = (Log(S / X) + (0.5 * v ^ 2) * T) / (v * (Sqr(T)))\nEnd Function\n' N(d1) calculation\nFunction NdOne(S, X, T, r, v)\n    NdOne = Exp(-(dOne(S, X, T, r, v) ^ 2) / 2) / (Sqr(2 * Application.WorksheetFunction.Pi()))\nEnd Function\n' D2 calculation\nFunction dTwo(S, X, T, r, v)\n    dTwo = dOne(S, X, T, r, v) - v * Sqr(T)\nEnd Function\n ' N(D2) calculation\nFunction NdTwo(S, X, T, r, v)</code></pre><p>The source gives an implementation sketch for interpolating a quadratic through low-strike, at-the-money-forward, and high-strike volatilities. It does not include a worked smile calibration or a claim that the helper was completed.</p>","contentSourceFormat":"typst","contentTypst":"== Week 7 --- 10 March 2025\n<week-7-10-march-2025>\nThe syllabus records \"Black-Scholes shortcomings: smile effects.\" The source export contains the volatility-surface helper below and explicitly labels it \"Vol Surface Functions --- Not to be completed by Student.\" I am preserving that status rather than presenting it as a finished calibration method.\n\n=== Risk-reversal and fly interpolation\n<risk-reversal-and-fly-interpolation>\n```vb\n' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- ' ------------------- ' ------------------- ' ------------------- ' -------------------\n' ------------------- Vol Surface Functions - Not to be completed by Student ---------------------\nFunction RRFlyQuadraticFit(lowStrike As Double, _\n                    atmFStrike As Double, _\n                    highStrike As Double, _\n                    ATMFVol As Double, _\n                    RRvol As Double, _\n                    FlyVol As Double, _\n                    XpointATMF As Double, _\n                    XPoint As Double)\n    Dim VollowStrike As Double\n    Dim VolATF As Double\n    Dim VolHighStrike As Double\n    Dim lowStrikeRelative As Double\n    Dim highStrikeRelative As Double\n    Dim XPointRelative As Double\n    Dim zero As Double\n    'If a crazy strike\n    If Abs(XPoint) > atmFStrike * 1000 Or Abs(XPoint) < atmFStrike / 1000 Then\n     RRFlyQuadraticFit = 0#\n    'If not a crazy strike\n    Else\n     'Make everything relative to ATMF\n     lowStrikeRelative = lowStrike - atmFStrike\n     highStrikeRelative = highStrike - atmFStrike\n     XPointRelative = XPoint - XpointATMF\n     zero = 0#\n     ' Low Strike vol\n      VollowStrike = ATMFVol - RRvol / 2 + FlyVol\n      VolATF = ATMFVol\n       VolHighStrike = ATMFVol + RRvol / 2 + FlyVol\n        RRFlyQuadraticFit = QuadraticFit(lowStrikeRelative, _\n                                         VollowStrike, _\n                                         zero, _\n                                         VolATF, _\n                                         highStrikeRelative, _\n                                         VolHighStrike, _\n                                         XPointRelative)\n    End If\nEnd Function\nFunction QuadraticFit(X1 As Double, _\n                    Y1 As Double, _\n                    X2 As Double, _\n                    Y2 As Double, _\n                    X3 As Double, _\n                    Y3 As Double, _\n                    XPoint As Double)\n    Dim Acoef As Double\n    Dim Bcoef As Double\n    Dim Ccoef As Double\n    Acoef = ((Y2 - Y1) * (X1 - X3) + _\n         (Y3 - Y1) * (X2 - X1)) / _\n        ((X1 - X3) * (X2 ^ 2 - X1 ^ 2) + _\n         (X2 - X1) * (X3 ^ 2 - X1 ^ 2))\n    Bcoef = ((Y2 - Y1) - Acoef * (X2 ^ 2 - X1 ^ 2)) _\n        / (X2 - X1)\n    Ccoef = Y1 - Acoef * X1 ^ 2 - Bcoef * X1\n    QuadraticFit = Acoef * XPoint ^ 2 + Bcoef * XPoint + Ccoef\nEnd Function\n'------------------- AUXILIARY FUNCTIONS --------------------\n```\n\n=== Auxiliary normal terms\n<auxiliary-normal-terms>\n```vb\n' D1 calculation\nFunction dOne(S, X, T, r, v)\n    dOne = (Log(S / X) + (0.5 * v ^ 2) * T) / (v * (Sqr(T)))\nEnd Function\n' N(d1) calculation\nFunction NdOne(S, X, T, r, v)\n    NdOne = Exp(-(dOne(S, X, T, r, v) ^ 2) / 2) / (Sqr(2 * Application.WorksheetFunction.Pi()))\nEnd Function\n' D2 calculation\nFunction dTwo(S, X, T, r, v)\n    dTwo = dOne(S, X, T, r, v) - v * Sqr(T)\nEnd Function\n ' N(D2) calculation\nFunction NdTwo(S, X, T, r, v)\n```\n\nThe source gives an implementation sketch for interpolating a quadratic through low-strike, at-the-money-forward, and high-strike volatilities. It does not include a worked smile calibration or a claim that the helper was completed.","dataUrl":"https://sharifhsn.dev/api/posts/fx-volatility-smiles-and-uncertainty.json","date":"2025-03-10","datePublished":"2025-03-10","description":"The syllabus records “Black-Scholes shortcomings: smile effects.” The source export contains the volatility-surface helper below and explicitly labels it “Vol Surface Functions —…","site":"https://sharifhsn.dev","slug":"fx-volatility-smiles-and-uncertainty","source":"FE-635 | Risk Engineering","sourceUrl":null,"tags":["FX","Volatility","Smiles"],"title":"FX Volatility Smiles and Uncertainty","url":"https://sharifhsn.dev/blog/fx-volatility-smiles-and-uncertainty/","version":"1","wordCount":505}