Friday, November 30, 2007

Determining the probability of your option position being profitable

Probabilities are hard to define and quantify and hence subjective nature of the elements cannot be completely eliminated. I go with the assumption that the variables follow a normal distribution.
I shall take a simple linear payoff model to explain what I've understood :- Writing a naked call option.

1) Collect sufficient data of prices. [Eg - 500 bars of nifty data]
2) Determine the number of trading days remaining to maturity, and call it as "n".[If you're buying a call option today(22nd), oct expiry (25th), no of days remaining is 3]
3) Calculate "n" day rate of change, in % terms for the sample collected in step 1. [ Calculate 3 day ROC of the 500 bar data available]
4) Determine your break even point, and the % change in price to break even. [If you're selling a 5600 call, with CMP at 5184, % change to achieve break even is 8%]
5) Calculate average ROC for the data available [sum of "3" divided by count of 3, the value is .4971]
6) Calculate standard deviation for the data available in "5".[StDev = 2.71625]
7) z score is defined as (4 - 5)/6 [(8 - .4971)/2.71625] = 2.7622
8) Find the probability of z value, by looking up the normal distribution table http://www.isixsigma.com/library/con...stribution.asp.
9) For a z value of 2.7622, the probability is .4971 on the right side of the distribution. Since we are not affected by the fall in prices, probability that the price will be below value in step 5 is 0.5

We can, thus conclude, that if we write a 5600 nifty call, probability of our trade being successful would be .5 + .4971 = .9971 or 99.71%.

Although this example is for a linear payoff, probability of success for a non-linear payoff can be calculated using a two tailed test.
Suggested reading : http://en.wikipedia.org/wiki/Normal_distribution


Metastock formula for automating the above example:
x:= Input("No of trading days to maturity",1,10000,25);
y:= Input("% to Breakeven",-1000,1000,0);
a:= ROC(C,x,%);
b:= ExtFml( "JRS_MSX.Stdev",a,Cum(1) - x,1);
d:= ExtFml( "JRS_MSX.MOV",a,Cum(1) - x,S);
f:= LastValue(d);
g:= LastValue(b);
i:= (y - f)/g;
i

Required download: JRS.MSX.dll (or forum20.dll) available in the metastock forum.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home