Formula for "implied volatility" for a PUT option

Discussion in 'Options' started by Derrenoption, Oct 20, 2016.

  1. Hello,

    I am using a formula to return the implied volatility for a CALL option.

    However, the formula I use does not work use to return the PUT options implied volatility. When inputing the PUT option price in the formula, I return a completely wrong value. So another formula must be used for PUT options.

    Seen on this calculator, it is possible to calculate the IV for CALL and PUT options:
    http://www.option-price.com/implied-volatility.php

    When googling, I only find examples for the CALL option and not the PUT.
    I code in C# so if there is any code for this, that would work also.
     
  2. Go to CBOE.com and then products and choose option calculator. You just need to enter, the ticker, share price, and choose strike then it will compute both prices for calls and puts at that strike price. You will get the Greeks as well. If CBOE doesn't have it then you likely don't need it.haha
     
  3. JackRab

    JackRab

    Call and put generally have the same IV. The only situations where they are different are:

    - Ex-dividend date before expiry.
    Which means some calls are more valued on the current stock price (cum-dividend) if they are to be exercised before dividend..., some calls are valued on the stock price ex-dividend... and most (if not all) puts are valued on the ex-dividend stock price. This screws up the inter-relations of the options.

    - Deep ITM puts which might be exercised early when the interest rates are high enough (carry is higher than the value of the call, bit technical there).

    So, if you get a different IV value for calls and puts with the same strike/expiry... you're either in a situation as above, or there's an arbitrage opportunity because the synthetic stock (by trading +call -put) doesn't match the actual stock. Which is doubtful, since arb opportunities will be done in millisecs by HFT.

    Or... you're looking at end-of-day figures, which are always out of sync anyways.
     
  4. JackRab

    JackRab

    Can you give me the specifics? Underlying price, which call and put strikes and expiry? Which prices you use and which IV's you get?
     
  5. Yes, I am looking at end-of-day figures at the moment. I did get from a response from another post a library in C# where it is possible to get the implied volatility: http://www.risk256.com/code

    I tried both the call and put option and I returned 19.7% and 17.3% on the same strikeprice ATM so it was very close as you mentioned there. Perheps during the day the implied volatility is more close or the same on the call and put side.

    The example is:
    stockprice = 85.54;
    strikeprice = 85;
    yearsexpiration = (double)30 / (double)365;
    knownoptionprice = (2.07 + 2.12) / 2;

    CALL: IV = 19.7%


    stockprice = 85.54;
    strikeprice = 85;
    yearsexpiration = 0.0821917808219178;
    knownoptionprice = (1.50 + 1.54) / 2;

    PUT: IV = 17.3%
     
  6. The BSM model for CALL is different than the BSM model for PUT.
    Here is a Perl snip for differences:
    Code:
    if ($call_flag ) {
      $price = sprintf("%.4f",$S * exp(-$q * $T) * &CND($d1) - $X * exp( -$r * $T ) * &CND($d2));
    } else { # ($call_flag iz zero for put)
      $price = sprintf("%.4f",$X * exp( -$r * $T ) * &CND(-$d2) - $S  * exp(-$q * $T) * &CND(-$d1));
    --------------
    Make the appropriate tweaks to your code to handle both.
    --------------------------
     
    Last edited by a moderator: Oct 21, 2016
  7. toonerdy

    toonerdy

    You do not know that each option's price is exactly half way between its bid and ask, although you do know that it is somewhere within that range.

    If the price of the underlying is $85.54, the 85 call is $0.54 in the money, so its premium (based on subtracting $0.54 from your bid and ask numbers of $2.07 and $2.12) is between $1.53 and $1.58. Since the premium of the put is apparently between $1.50 and $1.54, we could conclude that in, a world with no implementation costs (including no bid-ask spread for the underlying), put-call parity would imply that the premium of both options would be in the intersection these two ranges, that is, from $1.53 to $1.54.

    So, maybe you should try your computation with something like this:

    call_knownoptionprice = (2.07 + 2.08) / 2; /* by adding $0.54 to the range $1.53..$1.54 */
    put_knownoptionprice = (1.53 + 1.54) / 2;
     
  8. JackRab

    JackRab

    Well there you go...

    At 30 days to expiry there's basically no interest involved so...

    S-X = C-P
    85.54 - 85 = 2.095 - 1.52
    0.54 = 0.575

    So the call is priced too high (or the put too low)... so therefore the IV's don't match up either.
    That's the trouble with end of day. Also, midpoint in the quote might not be the exact theoretical price either...

    With the call valued at 2.07 (the bid), the put value is 1.53
    With the call valued at 2.12 (the offer), the put value is 1.58

    So if you would quote the options on the last traded stock price, the quotes should've been Call: 2.07@2.12 and Put 1.53@1.58

    Based on the actual quotes, and assuming the midpoints are the theoretical values... the stock price should've been at 85.575...
    At the end of day, the options close exactly at time=x, but the stocks will officially close at the end of the closing auction... which means after time=x and can move after options close...
     
    Last edited: Oct 23, 2016