Hi Ravi,

Difference between strikes being uneven is not important as you are fitting
a spline anyways, though closer and more strikes would yield better results.
It is an approximation and the more points you have the better it is.

As you are doing this for NIFTY index options - there will be problems due
to very low number of strikes available at times and stale prices (due to
low liquidity). IMO, those are bigger issues than the actual model used to
approximate the implied probability distribution.

Regarding the code, can you please comment the code a bit and resend /
repost?

Sankalp






On 8/30/07, Ravi S. Shankar <ravis@ambaresearch.com> wrote:
>
> Hi R users,
>
> First let me thank Krishna and Anup.
>
> Based on the suggestions I have given the r code along with the sample
> data.
>
> Sample data of the nifty index call options that I am using.
>
> Date    Expiry  Strike  Price   spot    InterestRate    Time_Mat
> 6/28/2002       25/07/2002      1090    7.5     1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1120    2.25    1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1110    3.5     1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1100    5.65    1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1080    9.55    1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1070    13      1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1060    17.7    1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1050    23.35   1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1040    28.1    1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1020    45      1057.8  0.0698
> 0.075396825
> 6/28/2002       25/07/2002      1030    38.5    1057.8  0.0698
> 0.075396825
>
> And the sample code that I am using.
>
> indexdata<-read.table("clipboard",header=T)
> n<-length(indexdata[,6])
> impvol=delta=0
> for(i in 1:n)
> {
> impvol[i]<-GBSVolatility(indexdata[i,4],"c",indexdata[i,5],indexdata[i,3
> ],indexdata[i,7],indexdata[i,6],0,0.0001,10000)
> }
> indexdata<-data.frame(indexdata,impvol)
> for(i in 1:n)
> {
>
> delta[i]<-GBSGreeks("delta","c",indexdata[i,5],indexdata[i,3],indexdata[
> i,7],indexdata[i,6],0,indexdata[i,8])
> }
> indexdata<-data.frame(indexdata,delta)
> tt<-splinefun(indexdata$delta,indexdata$impvol,method="natural",ties="me
> an")
> splinecoef <- get("z", envir = environment(tt))
>
> k<-indexdata$spot*exp(((indexdata$InterestRate)+0.5*(splinecoef$y)^2)*(i
> ndexdata$Time_Mat)-(qnorm(splinecoef$x)*(splinecoef$y)*sqrt(indexdata$Ti
> me_Mat)))
> call_price<-GBSOption(TypeFlag = "c", S = indexdata[1,5], X =k, Time
> =indexdata[1,7], r =indexdata[1,6], b = 0, sigma =splinecoef$y)
> hh<-data.frame(indexdata$Strike,indexdata$Price,indexdata$spot)
> mm<-data.frame(k,call_price@price,indexdata$spot)
> final_data<-data.frame(rbind(as.matrix(hh),as.matrix(mm)))
> final_data1<-final_data[order(final_data$indexdata.Strike),]
> i=final_data1$indexdata.spot-final_data1$indexdata.Strike
> final_data1<-data.frame(final_data1,i)
> c2<-final_data1[(order(abs(final_data1[,4]))[1]),2]
> c3<-final_data1[((order(abs(final_data1[,4]))[1])+1),2]
> c1<-final_data1[((order(abs(final_data1[,4]))[1])-1),2]
> imp_prob<-exp(indexdata[1,6]*indexdata[1,7])*((c1+c3-(2*c2))/16)
>
> Now I have the following question:
>
> The differences between the strikes are not even. I have used (4)^2 in
> computing imp_prob.
>
> Please tell me if I am proceeding in the correct direction in my
> computing of implied probability.
>
> Thank you in advance for your response.
> Regards,
>
> Ravi Shankar S
>
>
> -----Original Message-----
> From: Krishna Kumar [mailto:kriskumar@earthlink.net]
> Sent: Wednesday, August 22, 2007 7:37 AM
> To: Ravi S. Shankar
> Cc: r-sig-finance@stat.math.ethz.ch
> Subject: Re: [R-SIG-Finance] Implied Probability Distribution
>
>
> > Using non overlapping data of one month call option I have estimated
> the
> > implied volatility using the GBSVolatility of fOptions. Using these
> > implied volatilities I have obtained delta using GBSGreeks of the same
> > package.
> >
> > Using the natural splines I have plotted the implied volatility and
> > delta.
> >
> >
> >
> > I have two questions (this might be trivial but would be glad for
> > insight):
> >
> > 1) How do I extrapolate to obtain the tail?
> >
> I am afraid there is no easy answer to this either you could flat
> forward extrapolate or use your fitted functional form/spline to
> extrapolate and obtain the vols for those strikes in the wings.
> Stability is the key and using something that is too flexible could
> sometimes hurt in this case.
>
> > 2) How do I back out the option price? (We can use the Black- Scholes
> > model (GBSOption of fOptions), however my understanding is it requires
> > implied volatility and strike, but we have implied volatility and
> delta)
> >
> >
> >
> I couldn't find a version of the Breeden & Litzenberger paper but here
> is an easy read on this use eqn 3 on Page-4.
> http://www.bcb.gov.br/ingles/estabilidade/2002_nov/ref200201c62i.pdf
>
> In essence you use a continuum of Call prices and take the 2nd
> derivative with respect to Strike(K) and for this take the centered
> difference
> for starters there are some higher order differences that you can mess
> with later.
>
> Also if you have the delta you can always map that to a strike K using
> the formula in http://www.mathfinance.org/formulas_u/Vanilla/node20.html
> If you need further help it would help if you provide further
> information and possibly the data that you are using for this list to be
>
> of further help.
>
> Best
> Krishna
>
>
>
>
>
> >
> >
> > Thank you in advance for the help.
> >
> > Regards,
> >
> > Ravi
> >
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Finance@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
> >
>
> _______________________________________________
> R-SIG-Finance@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only.
> -- If you want to post, subscribe first.
>



-- 
--
Sankalp Upadhyay

	[[alternative HTML version deleted]]

