text book price probability calculation formulas seems to be pretty USELESS

Discussion in 'Options' started by mgzheng, Jul 19, 2005.

  1. mgzheng

    mgzheng

    I don't know if anyone here has done the same thing, but I took the S&P index prices from the past several years, and calculated for each date the winning probability of selling american style calls that are 2 standard deviations above current price using standard text book formulas (please see formulas at the end of the posting), hoping to find some sort of pattern or range in the probabilities. But guess what I have found? Both winning and losing trades have pretty much the SAME "winning probability distribution"! The success probability for winning trades range from about 40% to almost 100%. The success probability for trades that ended up losing range also from about 40% to almost 100%. So am I missing something in my formulas? If not, how is text book probability calculation USEFUL AT ALL? I don't think I missed anything in my formulas because I have compared their results to other option softwares out there.

    By the way, for the volatility, skew, and kurtosis values I passed to the formulas, I have used different periods: past 15 days, past 30 days, past 60 days, past 2000 days, variable (depending how far away from expiration). Spent a lot of time, got the same results.


    =============== VBA FORMULAS ==================
    '''''''''''''''''''''''''''''''''''''''''''''''
    ' explanation:
    '
    ' u - current price
    ' s - strike
    ' r - risk free interest rate (in decimal)
    ' v - volatility (in decimal)
    ' t - time to expiration (# days divided by 365)
    ' sk - skew (in decimal)
    ' kt - kurtosis (in decimal)
    ' dv - dividend in percentage, not applicable to indices
    '
    ' getITMProbNonNorm():
    ' Probability that price will reached strike price s,
    ' assume non-normal distribution.
    ' Success probability of selling a call at s will be:
    ' 1 - getITMProbNonNorm().
    '
    ' getITMProb():
    ' Probability that price will reached strike price s,
    ' assume normal distribution.
    ' Success probability of selling a call at s will be:
    ' 1 - getITMProb().
    '
    '''''''''''''''''''''''''''''''''''''''''''''''''
    Function getITMProbNonNorm(u As Double, _
    s As Double, _
    r As Double, _
    v As Double, _
    t As Double, _
    sk As Double, _
    kt As Double, _
    Optional dv = 0) As Double

    dim zi As Double
    dim i As Integer
    dim z As Double
    dim step As Double
    dim sum As Double
    dim t1#, t2#

    z = (Log(s / u) - (r - dv - v ^ 2 / 2) * t) / (v * Sqr(t))
    step = (z + 7) / 200
    sum = 0
    For i = 1 To 200
    zi = -7 + i * step - step / 2
    t1 = (sk / 6) * (zi ^ 3 - 3 * zi)
    t2 = ((kt - 3) / 24) * (zi ^ 4 - 6 * zi ^ 2 + 3)
    sum = sum + norm(zi) * (1 + t1 + t2) * step
    Next i
    getITMProbNonNorm = 1 - sum

    End Function

    Function getITMProb(u As Double, _
    s As Double, _
    r As Double, _
    v As Double, _
    t As Double, _
    Optional dv = 0) As Double

    getITMProb = 1 - snorm((Log(s / u) - _
    (r - dv - v ^ 2 / 2) * t) / (v * Sqr(t)))

    End Function

    'normal cumulative function
    Function snorm(z)
    Dim w As Integer
    Dim y As Single
    Dim c1, c2, c3, c4, c5, c6

    c1 = 2.506628
    c2 = 0.3193815
    c3 = -0.3565638
    c4 = 1.7814779
    c5 = -1.821256
    c6 = 1.3302744

    If z > 0 Or z = 0 Then
    w = 1
    Else: w = -1
    End If
    y = 1 / (1 + 0.2316419 * w * z)
    snorm = 0.5 + w * (0.5 - (Exp(-z * z / 2) / c1) * _
    (y * (c2 + y * (c3 + y * (c4 + y * (c5 + y * c6))))))
    End Function

    'normal distribution function
    Private Function norm(z As Double) As Double
    norm = 1 / Sqr(2 * PI) * Exp(-z ^ 2 / 2)
    End Function
     
  2. Trajan

    Trajan

    Let me get this straight, you are calculating just the probability that the call will go into the money based some volatility measure. You don't actually see if it does touch? I'm a little confused.
     
  3. Mzheng;

    1] 40-100% ;
    would that be average of 70% ???

    Excuse me if I dont get the definitions right or repeat;
    2] whats mode
    3] whats the midpoint, closer to 40 or 100%???

    Also those are barely OTM;
    guess it may/should be more than 40%,
    checked 2nd call otm aug SPX delta=.44,
    working trader/investor can probably to do better with buy/sell or sell/buy.

    Bit further otm should be better selling %;
    cause they sure dont favor buyer mostly.





    :cool:
     
  4. Quick question: how do you set s, your strike? Did you scale the return volatility by sqrt(t)?
     
  5. mgzheng

    mgzheng

    See link to excel file for what I'm talking about.

    This excel file does not show records for expiration dates (3rd Fridays of each month).

    "Standard Deviation Based On Days To Expiration" field is the standard deviation of closing price based on how many days away from expiration, with a minimum of 5 days. For instance, if we are 9 days away from expiration date, then this column will show the standard deviation of past 9 days closing prices. If we are 3 days away, it will show standard deviation of past 5 days closing prices.

    Again, we are shorting front month american style calls on spx (although it will make a more interesting example using put options instead), "Strike Price For Calls Sold" is the current closing price plus 2 times the "Standard Deviation Based On Days To Expiration", rounded to the neareast strike price available. From experience, calls with higher strike prices will not be filled.

    "Max Price Before Expiration" is the maximum price that will occur(maximum high) between current date and expiration date. Some of these maximum prices are the highs that occur on expiration dates, but again this excel sheet is not showing expiration date records.

    The trade is a winner if "Max Price Before Expiration" is LESS THAN "Strike Price For Calls Sold".

    The last columns in the sheets shows "initial success probability", meaning the probability that prices at any time before expiration will be LESS THAN "Strike Price For Calls Sold". This column uses the ITM probability formula for normal distribution.

    There are 4 sheets, 1st sheet has all records, going back for about 10 years. 2nd sheets shows all "winners". 3rd sheet shows all "losers". 4th sheet shows "inital success probabilities" distribution of winner and loser. As you can see, winners have a higher average "success probability". But what does that mean to me or anyone? Nothing really.

    Using the price probability formula assuming non-normal distribution give you similar results.

    Doesn't seem like "success probability" is a good "indicator" for entering this type of trades.

    http://www.geocities.com/mgzheng/docs/spx_short_call_success_prob.xls
     
  6. Trajan

    Trajan

    Thanks, that clears it up. I'll take a look at it tonight and after I find my Office disk, I had to reformat last week.
     
  7. Looks like you're setting the strike based on the volatility of the (closing) *level* of the SPX? That would explain the high probabilities you're getting.

    Sorry, I was confused by the initial message and thought you were surprised by the probs you were getting when you were 2 std devs below the strike. Since you're so close to the strike, the ITM/OTM (risk-neutral) probs will be pretty close.