Skip to main content
Bumped by Community user
Bumped by Community user
Tweeted twitter.com/StackQuant/status/1068837205286768640
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
added 39 characters in body
Source Link
S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )

S       = 1.205
tau     = 94.0 / 365.0
iv_v    = 0.0905
rr_v    = -0.005
bf_v    = 0.0013
for_df  = 0.9902752
dom_df  = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v
vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) )
k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau )
k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )
S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )

S       = 1.205
tau     = 94.0 / 365.0
iv_v    = 0.0905
rr_v    = -0.005
bf_v    = 0.0013
for_df  = 0.9902752
dom_df  = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v
vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) )
k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau )
k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )
Bumped by Community user

I am trying to replicate the results in Consistent Pricing of FX Options, A. Castagna and F. Mercurio. However, when I calculate the strike prices for 25-delta put and call and ATM I cannot get the same result as in the article.

The parameters given in the article (p.5):

  • T = = 94/365
  • S = = 1.205
  • s(ATM) = 0.0905
  • s(RR) = -0.0050
  • s(BF) = 0.08930013

These result in s(25dPut) = 0.0943 and s(25dCall) = 0.0893 (equations 4 and 5 on pages 2 and 3).

  • K(25dPut) = = 1.1733
  • K(25dCall) = 1.2487

The values I get (equations 6 and 7 on p. 3) are:

  • K(25dPut) = = 1.16688287...
  • K(25dCall) = 1.2421907...

Here is my Python code:

S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )

This code gives wrong results, but I cannot figure out where the error is.

I am trying to replicate the results in Consistent Pricing of FX Options, A. Castagna and F. Mercurio. However, when I calculate the strike prices for 25-delta put and call and ATM I cannot get the same result as in the article.

The parameters given in the article (p.5):

  • T = 94/365
  • S = 1.205
  • s(ATM) = 0.0905
  • s(RR) = -0.0050
  • s(BF) = 0.0893

These result in s(25dPut) = 0.0943 and s(25dCall) = 0.0893 (equations 4 and 5 on pages 2 and 3).

  • K(25dPut) = 1.1733
  • K(25dCall) = 1.2487

The values I get (equations 6 and 7 on p. 3) are:

  • K(25dPut) = 1.16688287...
  • K(25dCall) = 1.2421907...

Here is my Python code:

S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )

I am trying to replicate the results in Consistent Pricing of FX Options, A. Castagna and F. Mercurio. However, when I calculate the strike prices for 25-delta put and call and ATM I cannot get the same result as in the article.

The parameters given in the article (p.5):

  • T = 94/365
  • S = 1.205
  • s(ATM) = 0.0905
  • s(RR) = -0.0050
  • s(BF) = 0.0013

These result in s(25dPut) = 0.0943 and s(25dCall) = 0.0893 (equations 4 and 5 on pages 2 and 3).

  • K(25dPut) = 1.1733
  • K(25dCall) = 1.2487

The values I get (equations 6 and 7 on p. 3) are:

  • K(25dPut) = 1.16688287...
  • K(25dCall) = 1.2421907...

Here is my Python code:

S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )

This code gives wrong results, but I cannot figure out where the error is.

Source Link

FX Option strikes from ATM, RR, BF quotes

I am trying to replicate the results in Consistent Pricing of FX Options, A. Castagna and F. Mercurio. However, when I calculate the strike prices for 25-delta put and call and ATM I cannot get the same result as in the article.

The parameters given in the article (p.5):

  • T = 94/365
  • S = 1.205
  • s(ATM) = 0.0905
  • s(RR) = -0.0050
  • s(BF) = 0.0893

These result in s(25dPut) = 0.0943 and s(25dCall) = 0.0893 (equations 4 and 5 on pages 2 and 3).

  • K(25dPut) = 1.1733
  • K(25dCall) = 1.2487

The values I get (equations 6 and 7 on p. 3) are:

  • K(25dPut) = 1.16688287...
  • K(25dCall) = 1.2421907...

Here is my Python code:

S = 1.205 tau = 94.0 / 365.0 iv_v = 0.0905 rr_v = -0.005 bf_v = 0.0013 for_df = 0.9902752 dom_df = 0.9945049

vol_call = iv_v + bf_v + 0.5 * rr_v vol_put = iv_v + bf_v - 0.5 * rr_v

alpha = - scipy.stats.norm.ppf( 0.25 * np.exp( (for_df**(-1) - 1) * tau) ) k1 = S * np.exp( - alpha * vol_put * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_put**(2) ) * tau ) k2 = S * np.exp( alpha * vol_call * np.sqrt(tau) + ((dom_df**(-1) - 1) - (for_df**(-1) - 1) + 0.5 * vol_call**(2) ) * tau )